In-App Review APIとは
レビュー処理をアプリ内で完結させられるAPI。このAPIを利用することでストアに遷移せずともレビューを行うことができるようになる
実装
ライブラリの追加
dependencies {
implementation "com.google.android.play:review-ktx:2.0.0"
}
API呼び出し
...
val manager = ReviewManagerFactory.create(requireContext())
val request = manager.requestReviewFlow()
request.addOnCompleteListener { task: Task<ReviewInfo?> ->
when {
task.isSuccessful -> {
val reviewInfo = task.result
val flow = manager.launchReviewFlow(requireActivity(), reviewInfo)
flow.addOnCompleteListener { task1: Task<Void?>? ->
// The flow has finished.
}
}
else -> {
// error or something
}
}
}
...
実装としてはこれだけだが、ローカルでビルドし実機インストールして動作させても何も起こらない
動作確認方法
Developer Console で 内部テスト もしくは Internal app sharing にアプリをアップロードし、テスターを追加して検証する必要がある。バージョンコードを上げてアップロードする必要があり若干手間が掛かる
また、レビュー済みのテスターで動作確認するとAPIを呼び出しても何も起こらないので注意が必要である
注意事項
アプリ内レビューをリクエストするタイミング
公式: https://developer.android.com/guide/playcore/in-app-review?hl=ja#when-to-request
アプリ内レビューをリクエストするタイミング
ユーザーにアプリ内レビューをリクエストするタイミングを決める際は、次のガイドラインに従ってください。...
評価ボタンや評価カードを表示する前または表示中に質問をしない(「アプリを気に入りましたか?」といったユーザーの意見に関する質問や、「このアプリを 5 つ星と評価していただけますか?」といった予断を与える質問)。
とあり、事前に「星5つレビューをお願いします」などのメッセージを表示するのは推奨されないもよう
割り当て
公式: https://developer.android.com/guide/playcore/in-app-review?hl=ja#quotas
割り当ては変更される可能性があります。そのため、独自のロジックを適用し、可能な限り最適なタイミングをターゲットとして審査をリクエストすることが重要です。たとえば、API をトリガーするよう「行動を促す」オプション(ボタンなど)を設けないでください。ユーザーの割り当てがすでになくなっていて、フローが表示されず、ユーザー エクスペリエンスが破綻する可能性があるためです。このユースケースでは、代わりにユーザーを Play ストアにリダイレクトします。
とあり、「レビューする」ボタンを設置してそこから In-App Review API を呼び出すのも推奨されないもよう
まとめ
In-App Review API を実装し動作確認まで試してみた
動作確認を行うのに Developer Console にアプリをアップロードしないといけないのは検証がしにくいと思った
事前にレビュー済みかどうかをチェックする方法が現時点でなく、レビュー済みユーザーが「レビューする」ボタンをタップすると何も起こらずバグっぽい挙動になってしまうのはいまいちだと感じた
API呼び出しで表示されるレビューシートはデザインのカスタマイズはできず、選択された星の数によって条件分岐させることもできない
事前に何らかのメッセージを表示してからレビューを促すような使い方も推奨されないとのことで、何らかのタイミングでいきなり表示するような使い方を想定しているようで使いづらさを感じた