FlutterでIn-App Review機能を実装する
Flutterで個人開発しているアプリ内で、In-App Review機能を実装しました。
iOSとAndroidの端末で、In-App Review機能を実装やテスト方法を簡単にまとめてみます。
今回は、以下のパッケージを利用しました。
利用したパッケージ
バージョン
in_app_review: ^2.0.10
In-App Reviewとは
In-App Reviewは、アプリのレビューをしてもらうために、アプリのストアではなく、アプリ内でレビューできる仕組みです。
アプリのレビューをいただくことで、アプリの運営者にとっては、以下のようなメリットがあると思います。
- ユーザのアプリに対する評価の把握
- レビュー数によるアプリの信頼獲得
- …
熱量の高いユーザであれば、「AppStore」や「GooglePlayStore」など、ストアページに能動的に直接アクセスし、レビューしていただけるかもしれません。
僕自身は、ストアページ上でレビューをした経験は、今までほとんどないです。
しかし、突発的にアプリ内で出てくるレビュー画面では、何回か評価をつけた記憶があります。
(上図のようなレビューする要素を、この記事では「ポップアップ」と表現して記載します。一部引用した文章で「ダイアログ」と記載がありますが、「ポップアップ」とほぼ同義と捉えてください。)
アプリ内でレビューができるIn-App Review機能により、ユーザがアプリから離脱することなく、手軽にレビューを書けるきっかけを提供できます。
in_app_reviewパッケージの使い方
「in_app_review」パッケージでは、GoogleやAppleから提供されるAPIを利用しています。
- Android
- iOS
-
https://developer.apple.com/documentation/storekit/skstorereviewcontroller
そのため、AndroidとiOSで動作が異なる部分があります。
-
https://developer.apple.com/documentation/storekit/skstorereviewcontroller
主に、以下の3つの関数の動作を覚えると、「in_app_review」パッケージでIn-App Review機能を実装できます。
(今回の実装では、上2つの関数のみ利用しています。)
isAvailable()
レビュー表示の可否を確認のメソッドです。
表示の可否の判断基準は、iOSとAndroidによって異なります。
例えば、iOSはシミュレータ上で表示可能ですが、Androidはシミュレータ上で表示不可能でした。
requestReview()
In-App Reviewのポップアップを表示するメソッドです。
パッケージの公式ページのコード例にも記載の通り、「isAvailable()」で表示可の場合に、「requestReview()」を利用します。
import 'package:in_app_review/in_app_review.dart';
final InAppReview inAppReview = InAppReview.instance;
if (await inAppReview.isAvailable()) {
inAppReview.requestReview();
}
「requestReview()」は、頻繁に利用することは推奨されていません。
例えば、Androidの場合、In-App Reviewの表示回数条件を設けており、頻繁に「requestReview()」を利用すると、ポップアップが表示されず、エラーが多発する可能性があります。
優れたユーザー エクスペリエンスを提供するため、Google Play では、ある一定期間中レビュー ダイアログをユーザーに表示する回数に対して上限を設けています。この上限のため、短期間(たとえば 1 か月未満)に launchReviewFlow メソッドを複数回呼び出すと、ダイアログが表示されないことがあります。
例えば、常にアプリ内で表示される「レビューはこちら」ボタン等、常にユーザーにレビューを促す動線が表示される要素を作る場合には、「requestReview()」を使うのではなく、次に紹介する「openStoreListing()」を利用します。
openStoreListing()
アプリから離れて、ストアページに直接遷移するためのメソッドです。
アプリ内でレビューできる機能ではないため、期待するIn-App Review機能とは異なると思います。
しかし、ユーザが能動的に検索してストアページに遷移する必要がないため、レビューするまでの手間を省けるメリットはあります。
(ただし、レビューした後、ストアページからアプリに戻る手間もあるため、ユーザ体験としては、「requestReview()」でレビューを実現できた方が良さそうな印象です。)
僕の個人開発アプリでは、以下のように「ストアレビュー」ボタンがあり、直接ストアページに遷移できる機能があります。
既に実装済み機能だったため、「openStoreListing()」は個人開発アプリ内で利用していませんが、上図同様の遷移ができるメソッドと捉えています。
InAppReviewのテスト
iOS/Android共に、以下のように動作確認を実施しました。
(Androidは、現在配信を停止しているため、ストアにレビューが反映されるところまでテストはできていません。)
以下、テストで引っかかった内容を簡単に記載いたします。
iOS
シミュレータ上で、ポップアップの表示確認は可能です。
dev用のアプリでも表示可能でしたが、送信ボタンは押せないため、ストア上でのレビューの反映確認はできませんでした。
Android
シミュレータ上で、リリース版のapkファイルを作成しても、ポップアップの表示確認はできませんでした。
Google Play Storeの内部テストでアプリを配信し、実機で試すことで、ポップアップの表示確認ができました。
まとめ
Flutterで、In-App Review機能を「in_app_review」パッケージを利用して実装しました。
iOSとAndroidの両方に対応した機能を簡単に実装できました。
OSのバージョン等、細かい利用条件・テスト条件等は、ドキュメントでご確認ください。
間違っている内容がございましたら、ご指摘いただけますと幸いです!
Discussion