[Android] New In-app review API

Androidでアプリ内レビューリクエストが可能になりました。
Android 5.0 (API 21)以上、Google Play Storeがインストールされている端末で利用可能です。
https://developer.android.com/guide/playcore/in-app-review#when-to-request
アプリ内レビューAPIにはいくつかガイドラインが定められていたので実装時は確認したほうが良いと思います。

In-app review APIはPlay Core SDK1.8.0+に含まれています。

implementation "com.google.android.play:core-ktx:1.8.1"

アプリ内レビューフローを開始するにはRequestManagerを作成します。

val manager = ReviewManagerFactory.create(context)

RequestManagerを用い、リクエストタスクを作成します。成功すればアプリ内レビューフローを表示するのに必要なReviewInfoオブジェクトを返します。

val request = manager.requestReviewFlow()
request.addOnCompleteListener { request ->
   if (request.isSuccessful) {
       // We got the ReviewInfo object
       val reviewInfo = request.result
   } else {
       // There was some problem, continue regardless of the result.
   }
}

ReviewInfoオブジェクトは限られた時間で有効との記述があったので、プリキャッシュとして先にReviewInfoインスタンスを取得しておく場合は、その後にアプリ内レビューを確実に呼び出すような流れにした方が良さそうです。

ReviewInfoを用いてフローを表示します。

val flow = manager.launchReviewFlow(activity, reviewInfo)
flow.addOnCompleteListener { _ ->
   // The flow has finished. The API does not indicate whether the user
   // reviewed or not, or even whether the review dialog was shown. Thus, no
   // matter the result, we continue our app flow.
}

注意点として、launchReviewFlowメソッドは必ずアプリ内レビューのダイアログを表示するとは限りません。Google Playが表示の頻度を制御しているようです。
また、onCompleteListenerではアプリをレビューしたかどうか、ダイアログが表示されたかどうかなどの情報は得られません。ドキュメントに「アプリ内レビューフローでエラーが発生した場合ユーザーに通知したり、アプリのフローを変更したりしないでください」との記述もあったのでアプリ内レビューの結果をハンドリングしたい場合は注意が必要です。

In-app review APIのテストをしたい場合はFakeReviewManagerを用いることができます。

val manager = FakeReviewManager(context)

FakeReviewManagerはUIを表示してくれるわけではありません。ReviewInfoオブジェクトのフェイクを返してくれるのと、アプリ内レビューフローを起動したとき成功ステータスを返してくれるテスト用のmanagerです。

この記事が気に入ったらサポートをしてみませんか?