투케이2K

307. (AndroidStudio/android/java) ReviewManager 사용해 인앱 구글 플레이스토어 리뷰 팝업창 호출 실시 본문

Android

307. (AndroidStudio/android/java) ReviewManager 사용해 인앱 구글 플레이스토어 리뷰 팝업창 호출 실시

투케이2K 2022. 7. 13. 15:01
반응형

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : java

 

[소스 코드]

        // [자바스크립트에서 호출하는 안드로이드 메소드]
        @JavascriptInterface
        public void setOpenReview() {
            js_handler.post(new Runnable() {
                public void run() {
                    Log.i("---","---");
                    Log.w("//===========//","================================================");
                    Log.i("","\n"+"[A_Main >> AndroidBridge :: setOpenReview() :: JS >> Android]");
                    Log.i("","\n"+"[전달받은 데이터 :: "+String.valueOf("")+"]");
                    Log.i("","\n"+"[설 명 :: "+String.valueOf("인앱 리뷰 열기 수행 명령 전달 받음")+"]");
                    Log.w("//===========//","================================================");
                    Log.i("---","---");

                    /**
                     * // -----------------------------------------
                     * [인앱 리뷰 팝업창 열기 설명]
                     * // -----------------------------------------
                     * 1. build.gradle 의존성 설정 :
                     *
                     *  implementation 'com.google.android.play:review:2.0.0'
                     *  implementation 'com.google.android.play:review-ktx:2.0.0'
                     * // -----------------------------------------
                     * 2. 랜덤 리뷰 팝업창 호출 되지 않는 원인 종류 :
                     *
                     *  - 앱이 Play 스토어에 아직 게시되지 않았습니다
                     *    (테스트를 위해 앱을 게시할 필요는 없지만 앱의 applicationID는 최소한 내부 테스트 트랙에서 사용할 수 있어야 합니다)
                     *
                     *  - 사용자 계정으로 앱을 평가할 수 없습니다
                     *    (앱이 사용자의 Google Play 라이브러리에 있어야 합니다)
                     *
                     *  - 기본 계정이 Play 스토어에서 선택되지 않았습니다
                     *    (기기에서 여러 계정을 사용할 수 있는 경우 기본 계정이 Play 스토어에서 선택된 계정인지 확인합니다)
                     *
                     *  - 사용자 계정이 보호되고 있습니다
                     *    (대신 Gmail 계정을 사용합니다)
                     *
                     *  - 사용자가 이미 앱을 평가했습니다
                     *    (Play 스토어에서 직접 리뷰를 삭제합니다)
                     *
                     *  - 할당량에 도달했습니다
                     *    (내부 테스트 트랙 또는 내부 앱 공유를 사용합니다)
                     *
                     *  - 기기에서 Google Play 스토어 또는 Google Play 서비스 관련 문제가 발생했습니다
                     *    (유효한 버전의 Play 스토어 및 Google Play 서비스가 있는 다른 기기를 사용합니다)
                     * // -----------------------------------------
                     * 3. 랜덤 리뷰 팝업창 호출 시점 및 테스트 설명 :
                     *
                     *  - 실제 구글 플레이스토어에 배포 출시 된 애플리케이션
                     *
                     *  - 하이드리드앱으로 자바스크립트 브릿지 명령이 내려오면 리뷰 팝업창 호출
                     *
                     *  - 재수행 테스트를 하기 위해서는 구글 스토어 애플리케이션 데이터 및 캐시 삭제 후 다시 테스트
                     * // -----------------------------------------
                     * 4. 참고 사이트 :
                     *  https://developer.android.com/guide/playcore/in-app-review/kotlin-java?hl=ko#java
                     *  https://developer.android.com/guide/playcore/in-app-review/test?hl=ko
                     * // -----------------------------------------
                     * */

                    try {
                        ReviewManager manager = ReviewManagerFactory.create(A_Main.this);
                        Task<ReviewInfo> request = manager.requestReviewFlow();
                        request.addOnCompleteListener(task -> {
                            if (task.isSuccessful()) {
                                Log.i("---","---");
                                Log.w("//===========//","================================================");
                                Log.i("","\n"+"[A_Main >> AndroidBridge :: setOpenReview() :: JS >> Android]");
                                Log.i("","\n"+"[로 직 :: "+String.valueOf("인앱 리뷰 열기 수행 정상")+"]");
                                Log.i("","\n"+"[getResult :: "+String.valueOf(request.getResult().describeContents())+"]");
                                Log.w("//===========//","================================================");
                                Log.i("---","---");

                                // [리뷰 창 호출 실시]
                                ReviewInfo reviewInfo = task.getResult();
                                manager.launchReviewFlow(A_Main.this, reviewInfo);
                            } else {
                                // There was some problem, log or handle the error code.
                                // @ReviewErrorCode int reviewErrorCode = ((TaskException) task.getException()).getErrorCode();
                                Log.i("---","---");
                                Log.e("//===========//","================================================");
                                Log.i("","\n"+"[A_Main >> AndroidBridge :: setOpenReview() :: JS >> Android]");
                                Log.i("","\n"+"[로 직 :: "+String.valueOf("인앱 리뷰 열기 수행 에러 발생")+"]");
                                Log.i("","\n"+"[getResult :: "+String.valueOf(request.getResult().describeContents())+"]");
                                Log.e("//===========//","================================================");
                                Log.i("---","---");
                            }
                        });
                    }
                    catch (Exception e){
                        e.printStackTrace();
                    }
                }
            });
        }
 

[결과 출력]


반응형
Comments