Google は、黒人コミュニティに対する人種平等の促進に取り組んでいます。取り組みを見る

アプリ内レビューを統合する(ネイティブ)

このガイドでは、ネイティブ(C または C++)コードを使用してアプリにアプリ内レビューを統合する方法について説明します。Kotlin もしくは Java または Unity を使用している場合の統合ガイドは、個別に用意されています。

ネイティブ SDK の概要

Play Core Native SDK は Play Core SDK ファミリーに含まれています。Play Core Native SDK には、Java Play Core SDK の ReviewManager をラップする C ヘッダー ファイル review.h が含まれています。このヘッダー ファイルを使用すると、アプリはネイティブ コードから直接 API を呼び出すことができます。利用可能なパブリック関数の概要については、Play レビュー ネイティブ モジュールのドキュメントをご覧ください。

ReviewManager_requestReviewFlow で、後でアプリ内レビューのフローを起動するために必要な情報を収集するためのリクエストを開始します。ReviewManager_getReviewStatus を使用して、リクエストの結果を追跡できます。ReviewManager_getReviewStatus が返すすべてのステータスの詳細については、ReviewErrorCode をご覧ください。

関数の実行が成功すると、Request 関数と Launch 関数の両方が REVIEW_NO_ERROR を返します。

開発環境をセットアップする

開発環境を設定するには、Play Core Library ガイドのネイティブ セクションに記載されている設定手順に従ってください。

review.h を追加する

Play Core Native SDK をプロジェクトに統合したら、API 呼び出しを含むファイルに次の行を追加します。

#include "play/review.h"

Review API を初期化する

API を使用する場合は、常に ReviewManager_init 関数を呼び出して API を初期化する必要があります。android_native_app_glue.h でビルドされた次の例をご覧ください。

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 オペレーションの進行状況をモニタリングします。たとえば、フレームごとに 1 回呼び出します。この処理には数秒かかることがあるため、アプリ内レビューのフローを表示する際は、アプリがポイントに到達する前に、このプロセスを開始する必要があります。

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 のステータスに応じてロジックを定義できます。このための 1 つのアプローチとして、グローバル変数としてステータスを保持し、ユーザーが特定のアクション(ゲームの「次のレベル」ボタンをタップするなど)を実行したときに、ステータスが 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();

次の手順

アプリのアプリ内レビューのフローをテストして、統合が正しく機能していることを確認します。