Google은 흑인 공동체를 위한 인종 간 평등을 진전시키기 위해 노력하고 있습니다. Google에서 어떤 노력을 하고 있는지 확인하세요.

인앱 검토 통합(네이티브)

이 가이드에서는 네이티브(C 또는 C++) 코드를 사용하여 인앱 검토를 앱에 통합하는 방법을 설명합니다. Kotlin이나 자바 또는 Unity를 사용한다면 별도의 통합 가이드가 있습니다.

Native SDK 개요

Play Core Native SDK는 Play Core SDK 제품군의 일부입니다. Play Core Native SDK에는 C 헤더 파일 review.h가 포함되어 있어 Java Play Core SDK의 ReviewManager를 래핑합니다. 이 헤더 파일을 사용하면 앱이 네이티브 코드에서 직접 API를 호출할 수 있습니다. 사용할 수 있는 공개 함수에 관한 개요는 Play 검토 네이티브 모듈 문서를 참고하세요.

ReviewManager_requestReviewFlow는 나중에 인앱 검토 흐름을 실행하는 데 필요한 정보를 수집하는 요청을 시작합니다. ReviewManager_getReviewStatus를 사용하여 요청 결과를 추적할 수 있습니다. ReviewManager_getReviewStatus에서 반환할 수 있는 모든 상태에 관한 자세한 내용은 ReviewErrorCode를 참고하세요.

함수가 성공하면 요청 함수와 실행 함수 모두 REVIEW_NO_ERROR를 반환합니다.

개발 환경 설정

개발 환경을 설정하려면 Play Core 라이브러리 가이드에 있는 네이티브 섹션의 설정 안내를 따르세요.

review.h 포함

Play Core Native SDK를 프로젝트에 통합한 후 API 호출이 포함될 파일에 다음 줄을 포함합니다.

#include "play/review.h"

Review API 초기화

언제든지 API를 사용하려면 android_native_app_glue.h로 빌드된 다음 예와 같이 먼저 ReviewManager_init 함수를 호출하여 초기화해야 합니다.

void android_main(android_app* app) {
  app->onInputEvent = HandleInputEvent;

  ReviewErrorCode error_code = ReviewManager_init(app->activity->vm, app->activity->clazz);
  if (error_code == REVIEW_NO_ERROR) {
    // You can use the API.
  }
}

인앱 검토 흐름 요청

인앱 검토를 요청하는 시기에 관한 안내에 따라 앱의 사용자 플로우에서 적절한 지점을 결정하여 사용자에게 검토를 요청하는 메시지를 표시합니다(예: 사용자가 게임 레벨을 끝낼 때 표시되는 요약 화면을 닫은 후). 앱이 이러한 지점 중 하나에 가까워지면 ReviewManager_requestReviewFlow를 호출하여 앱에서 인앱 검토 흐름을 실행하는 데 필요한 정보를 비동기식으로 요청합니다. ReviewManager_getReviewStatus를 호출(예: 프레임당 한 번씩)하여 ReviewManager_requestReviewFlow 작업의 진행 상황을 모니터링합니다. 최대 몇 초 정도 걸릴 수 있으므로 인앱 검토 흐름을 표시하려는 시점에 앱이 도달하기 전에 이 프로세스를 시작해야 합니다.

ReviewErrorCode error_code = ReviewManager_requestReviewFlow();
if (error_code == REVIEW_NO_ERROR) {
    // The request has successfully started, check the status using
    // ReviewManager_getReviewStatus.
}

상태 처리 및 인앱 검토 흐름 실행

요청이 시작되거나 인앱 검토 흐름이 실행될 때마다 ReviewManager_getReviewStatus를 사용하여 상태를 확인할 수 있습니다. 이렇게 하면 API 상태에 따라 로직을 정의할 수 있습니다. 이렇게 하는 한 가지 방법은 다음 예와 같이 상태를 전역 변수로 유지하고 사용자가 특정 작업(예: 게임에서 '다음 레벨' 버튼 탭하기)을 실행할 때 상태가 REVIEW_REQUEST_FLOW_COMPLETED인지 확인하는 것입니다.

ReviewStatus status;
ReviewErrorCode error_code = ReviewManager_getReviewStatus(&status);
if (error_code != REVIEW_NO_ERROR) {
    // There was an error with the most recent operation.
    return;
}

switch (status) {
    case REVIEW_REQUEST_FLOW_PENDING:
        // Request is ongoing. The flow can't be launched yet.
        break;
    case REVIEW_REQUEST_FLOW_COMPLETED:
        // Request completed. The flow can be launched now.
        break;
    case REVIEW_LAUNCH_FLOW_PENDING:
        // The review flow is ongoing, meaning the dialog might be displayed.
        break;
    case REVIEW_LAUNCH_FLOW_COMPLETED:
        // The review flow has finished. Continue with your app flow (for
        // example, move to the next screen).
        break;
    default:
        // Unknown status.
        break;
}

상태가 REVIEW_REQUEST_FLOW_COMPLETED이고 앱이 준비되면 인앱 검토 흐름을 실행합니다.

// This call uses android_native_app_glue.h.
ReviewErrorCode error_code = ReviewManager_launchReviewFlow(app->activity->clazz);
if (error_code != REVIEW_NO_ERROR) {
    // There was an error while launching the flow.
    return;
}

인앱 검토 흐름을 실행한 후 완료 상태를 계속 확인하고 앱 흐름을 계속 진행합니다. 이 작업을 처리하는 일반적인 방법은 게임 루프 패턴을 따르는 것입니다.

리소스 확보

앱에서 API 사용을 완료하면(예: 인앱 검토 흐름이 완료된 후) ReviewManager_destroy 함수를 호출하여 리소스를 확보해야 합니다.

void ReviewManager_destroy();

다음 단계

앱의 인앱 검토 흐름 테스트를 통해 통합이 제대로 작동하는지 확인합니다.