はじめに
2020年8月あたりにIn-app Review
というAPIがAndroidに実装され、ゲーム内にレビューのポップアッグができるようになったようです。
android-developers.googleblog.com
またUnity公式がこちらのAPIをUnityで使えるようにできるパッケージを用意してくれているので、今回はそちらの使い方を紹介したいと思います。
developer.android.com
パッケージ導入
まずはPackage Manager
からExternal Dependency Manager for Unity
をインストールします。
無事インストールできると、Package Managanr
にGoogleのパッケージがたくさん追加されているはずです。
その中からGoogle Play In-app Review
を見つけインストールを行えば準備は完了です。
コード
iOS
のときは一行でOKでしたが,こちらはユーザー情報の取得と,エラー処理を少し書く必要があります。
using System; using System.Collections; using Google.Play.Review; using UnityEngine; public static class ReviewClient { #if UNITY_ANDROID && !UNITY_EDITOR private static ReviewManager _reviewManager; static ReviewClient() { _reviewManager = new ReviewManager(); } #endif public static IEnumerator RequestPlayReviewInfo(Action<PlayReviewInfo> onCompleted) { // ユーザー情報を取得する() #if UNITY_ANDROID && !UNITY_EDITOR var requestFlowOperation = _reviewManager.RequestReviewFlow(); yield return requestFlowOperation; if (requestFlowOperation.Error != ReviewErrorCode.NoError) yield break; var playerReviewInfo = requestFlowOperation.GetResult(); onCompleted?.Invoke(playerReviewInfo); #else Debug.Log("Request PlayerReviewInfo."); onCompleted?.Invoke(null); yield break; #endif } public static IEnumerator Review(PlayReviewInfo info) { #if UNITY_ANDROID && !UNITY_EDITOR var launchFlowOperation = _reviewManager.LaunchReviewFlow(info); yield return launchFlowOperation; if (launchFlowOperation.Error != ReviewErrorCode.NoError) yield break; #else Debug.Log("Execute Review."); yield break; #endif } }
このようなコードを配置した後、以下のように使います。
public class ReviewTest : MonoBehaviour { void Start() { StartCoroutine(ReviewClient.RequestPlayReviewInfo(info => StartCoroutine(ReviewClient.Review(info)))); } }
※今回はコルーチンで行いましたが、Task
やUniTask
を使えばもう少しスマートに書けるはずです。
注意すること
PlayReviewInfo
オブジェクトは一定期間のみ有効です。キャッシュするのはあまり得策とは言えないでしょう。(短い時間ならOKかも?)
また今回のレビュー機能はGoogle Playからダウンロードしたアプリのみでしか機能しません。
ですので、ただビルドしたものをスマホに入れても動かないことに注意してください。