본문 바로가기
Programing/android

[android studio] 인앱리뷰(In-App Review) 구현 및 실행 오류

by TEXTBOX 2021. 11. 4.
728x90

구글에서 Google Play에 들어가서 리뷰를 남기는 것이 아닌,
앱 내에서 리뷰를 남길 수 있도록 API를 제공하였다.

해당 기능을 이용하여 인앱리뷰 기능을 구현해 보았다.
기능은 아래 이미지처럼 앱 안에서 동작하는 기능이다.
(그림은 구글 인앱리뷰 가이드에 첨부된 이미지이다.)

참조 URL (https://developer.android.com/guide/playcore/in-app-review)

 

구현방법은 간단하였다.
리뷰남기기 버튼을 클릭할 경우 실행되는 Method안에 아래 코드를 넣어주면 끝이였다.

ReviewManager manager = ReviewManagerFactory.create(this);
Task<ReviewInfo> request = manager.requestReviewFlow();
request.addOnCompleteListener(task -> {
	if (task.isSuccessful()) {
		// We can get the ReviewInfo object
		ReviewInfo reviewInfo = task.getResult();
        manager.launchReviewFlow(MainActivity.this, reviewInfo);
	} else {
		// There was some problem, log or handle the error code.
		//@ReviewErrorCode int reviewErrorCode = ((TaskException) task.getException()).getErrorCode();
	}
});

 

이후 앱에서 동작하는것을 확인하고 이후 몇번 더 테스트를 해 보았다.
그런데 한번 이후 동작이 아예 실행되지 않았다.;;;;

이리저리 자료를 찾아본 결과
현재 해당 오류에 대해서 이슈가 있었고 해당 api의 업데이트를 요구하는 글이 많았다.
구글 이슈트래커에 해당 글이 올라와 있었다.

다시 테스트를 할 수 있는 방법이 있을까하여 자료를 찾아본 결과
내부앱공유 설정을 하여서 테스트 앱을 다운로드 하여 테스트하는 방법이 있었다.

1. Google Play Console - 앱 - 설정 - 내부 앱 공유 - 업로더 및 테스터에 테스트할 계정을 등록한다.
2. 업로더 및 테스트 탭안에 업로드관리 항목에 있는 https://play.google.com/console/internal-app-sharing링크를 클릭하여 이동한 페이지에서 apk를 등록하고 다운로드 링크를 복사한다.
3. Play 스토어 앱 - 설정 - 정보 - Play 스토어 버전 항목을 7번 연속 클릭하면 개발자 모드로 변경된다.
다시 설정 - 일반으로 가면 '내부 앱 공유' 항목이 나타난다. 해당 항목을 켜준다.
4. 2번에서 복사한 다운로드 링크를 클릭하여 앱을 설치하고 테스트 한다.

해당 방법으로 테스트를 할 수 있고 해결된 사람들이 다수 보였다.
그러나 나는 예외였던가.. 되지 않았다;;;;

다시 자료를 찾아본 결과 한번 리뷰를 남기게 된 이력이 있을 경우 재실행이 되지 않는다는 글이 있었다.
리뷰를 삭제하고 폰에서 해당 이력을 삭제해야 된다는 것이였다.
1. 플레이 스토어에 남긴 리뷰를 삭제 (리뷰는 남기지 않고 종료하여 이건 패쓰)
2. 폰 설정 - 어플리케이션 - Google Play 스토어 - 저장공간 으로 들어가서 데이터와 캐시를 삭제

해당 방법으로 다시 한번 실행이 가능하다고 한다;;;;

해당 방법으로도 안된사람들이 있었는데 나도 그중하나였다;;;;;

안된 사람들은 그냥 앱을 출시를 하였는데 출시된 앱에서는 잘 동작하였다고 한다.
한번 실행된것 봐서는 나도 잘 동작할 것으로 짐작은 되지만
이 찝찝한 느낌으로 출시를 해야 된다는 것이 마음에 들지 않았다 ㅠㅠ

빨리 업데이트 되기만을 바래본다.....

 

* 한번 이후 안되는 것에 대해서는 android developers에서 찾을 수 있었다.

할당량
우수한 사용자 환경을 제공하기 위해 Google Play는 사용자에게 리뷰 대화상자를 표시할 수 있는 빈도에 관한 시간제한 할당량을 적용합니다. 이 할당량으로 인해 짧은 기간(예: 1개월 미만) launchReviewFlow 메서드를 두 번 이상 호출할 경우 대화상자가 표시되지 않을 수도 있습니다.

참고: 구체적인 할당량 값은 구현 세부정보이며 Google Play에서 예고 없이 변경할 수 있습니다.

할당량은 변경될 수 있으므로 자체 로직을 적용하고 리뷰를 요청하는 최적의 순간을 타겟팅하는 것이 중요합니다. 예를 들어 사용자가 이미 할당량에 도달하고 흐름이 표시되지 않아 사용자에게 단절된 경험을 제공할 수 있으므로 API를 트리거하는 클릭 유도문안 옵션(예: 버튼)이 있어서는 안 됩니다. 이 사용 사례의 경우 사용자를 대신 Play 스토어로 리디렉션합니다.

짧은 기간에 2번이상 호출이 금지되어 있었다.
그래서 테스트는 따로 구현을 해서 테스트를 하도록 되어 있었다.

ReviewManager호출시에 Fake 인스턴스를 호출하여 사용해라는 것이다.

ReviewManager manager = new FakeReviewManager(context);

테스트에서의 문제는 해결된 것 같았다.

그런데 사용자가 한번 클릭하여 리뷰를 남기려다 닫았다면 다시 호출이 안된다는 것인데 그건
그거대로 문제가 야기될 수 있을듯 하다.
이런 문제에 대해서는 구글에서는 아직 답이 없는 것으로 보인다.

728x90

댓글