はじめに
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」ファイルのダウンロードやインポートについての詳しい手順はこちらを参考にしてください↓
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ではレビューダイアログの表示頻度に「割り当て」という制限があり、何度も確認していると、表示できなくなります。挙動確認中にハマりました。
開発中に何度も確認したい場合は以下2択あります。
- 内部アプリ共有・内部テストトラックを利用する
- FakeReviewManagerを利用する
ただし、Unityでは現在FakeReviewManager
が利用できないようなので、「内部アプリ共有・内部テストトラックを利用する」の1択になります。
Unityビルドから直接確認できなくなった場合は、一度ストアにビルドをアップして確認する必要があります。少し手間ですね。。