【Unity】アプリ内レビュー依頼を実装する iOS/Android

  • URLをコピーしました!
目次

はじめに

Unityを使って作成したアプリで iOS / Android、 それぞれの「アプリ内レビュー依頼」の実装について紹介します。

以前、参考にしていたブログが突然閉鎖してしまったので、自分でも忘れないよう残しておきます。

iOS

iOSの場合はUnity側でAPIが用意されているので、下記を呼び出すだけです。

 UnityEngine.iOS.Device.RequestStoreReview();

Android

Androidは少々準備が必要です。

Googleのアーカイブサイトから「In-App Review」に必要な「.tgz」ファイルまたは「.unitypackage」をダウンロードして、Unity プロジェクトにインポートします。

  • 「.tgz」ファイルを使用する場合は下記が必要です。
    • com.google.play.review
    • com.google.android.appbundle
    • com.google.play.common
    • com.google.play.core
    • com.google.external-dependency-manager

「.tgz」ファイルのダウンロードやインポートについての詳しい手順はこちらを参考にしてください↓

あわせて読みたい
【Unity】Google APIs for UnityをPackage Managerで管理する はじめに Game Package Registry (GPR) by Google が2021年5月19日でパッケージの提供を終了してしまったので、「.tgz」ファイルを使って「Firebase」や「In-App Review...

AdMob SDKなども使用している場合は「ExternalDependencyManager」が被ると思います。基本的にはバージョンが新しい方を選んでください。

コードサンプル

iOS / Android 共通して使えるようにしたコードサンプルです。

using System.Collections;
using UnityEngine;

public static class InAppReviewManager
{
    public static IEnumerator RequestReview()
    {
#if UNITY_IOS
        UnityEngine.iOS.Device.RequestStoreReview();
        yield break;

#elif UNITY_ANDROID
        var reviewManager = new Google.Play.Review.ReviewManager();
        var requestFlowOperation = reviewManager.RequestReviewFlow();
        yield return requestFlowOperation;
        if(requestFlowOperation.Error != Google.Play.Review.ReviewErrorCode.NoError)
        {
            // Log error. For example, using requestFlowOperation.Error.ToString().
            yield break;
        }
        var playReviewInfo = requestFlowOperation.GetResult();

        var launchFlowOperation = reviewManager.LaunchReviewFlow(playReviewInfo);
        yield return launchFlowOperation;
        playReviewInfo = null; // Reset the object
        if(launchFlowOperation.Error != Google.Play.Review.ReviewErrorCode.NoError)
        {
            // Log error. For example, using requestFlowOperation.Error.ToString().
            yield break;
        }
#else
        Debug.Log("RequestReview Not supported.");
#endif

    }

}

使い方

staticクラスにしているのでシーンに配置する必要はありません。「レビュー依頼」を表示させたいタイミングでMonoBehaviourを継承しているクラスからStartCoroutineを使って下記の要領でRequestReviewメソッドを呼び出してください。

StartCoroutine()はMonoBehaviourクラスの関数です。

StartCoroutine(InAppReviewManager.RequestReview());

あとは、端末で表示されるか確認してみてください。

Android

注意

Androidではレビューダイアログの表示頻度に「割り当て」という制限があり、何度も確認していると、表示できなくなります。挙動確認中にハマりました。

開発中に何度も確認したい場合は以下2択あります。

  • 内部アプリ共有・内部テストトラックを利用する
  • FakeReviewManagerを利用する

ただし、Unityでは現在FakeReviewManagerが利用できないようなので、「内部アプリ共有・内部テストトラックを利用する」の1択になります。

GitHub
Testing Review flow in Unity · Issue #53 · google/play-unity-plugins Morning. I am integrating the testing in Unity game following these steps. However, my app is still in development and it doesn't work. I went to check the test...

Unityビルドから直接確認できなくなった場合は、一度ストアにビルドをアップして確認する必要があります。少し手間ですね。。

その他 参考

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次