実装の目的
ユーザーがアプリ内から直接レビューを投稿できるようにすることで、アプリのフィードバックを容易に受け取れるようにする。
2023/11/25 追記
rete in app を用いた実装方法についての記事も公開しました。現在はこちらを採用しています
実装のイメージ
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F262578%2Fc5512f9f-c1a5-166d-7af3-c5814af5bbce.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=b8883f01432d44ea680fea7fcf3034ce)
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F262578%2F6e64053b-d98b-554d-0e12-2d0c4f35227b.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=8f3a69e6af655d9a55c719c58f05f135)
pub.dev/packages/in_app_review より引用
概要
この記事では、in_app_review パッケージを使用して、Flutter アプリ内でレビュー機能を実装する方法について紹介します。
また、アプリが特定のバージョンに対応していない場合に備え、ユーザーをApp StoreやGoogle Play Storeのページに誘導するフォールバック処理を実装する方法についても説明します。
使用するパッケージとバージョン
- Flutter: 3.0.6
- url_launcher: 6.1.14
- in_app_review: 2.0.8
実装方法
コア機能の実装
以下のコードは、アプリ内レビュー機能を実装するためのコアとなる部分です。InAppReview インスタンスを使用して、ユーザーがApp StoreやGoogle Play Storeで直接レビューを行えるようにします。また、この機能が利用できない場合は、ユーザーを適切なストアのページに誘導します。
class DrawerHelper {
static final InAppReview _inAppReview = InAppReview.instance;
// URLを定数化
static const String _urlAppStore =
'AppStoreURL';
static const String _urlPlayStore =
'PlayStoreURL';
static void launchStoreReview(BuildContext context) async {
try {
if (await _inAppReview.isAvailable()) {
_inAppReview.requestReview();
} else {
// ストアのURLにフォールバック
final url = Platform.isIOS ? _urlAppStore : _urlPlayStore;
if (!await launchUrl(Uri.parse(url))) {
throw 'Cannot launch the store URL';
}
AnalyticsService.instance.analytics.logEvent(
name: 'navigate_to_store_url',
);
}
} catch (e) {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(content: Text('ストアページを開けませんでした')),
);
}
}
}
呼び出し元の例
ListTile(
leading: const Icon(Icons.star),
title: const Text('レビューをする'),
onTap: () => DrawerHelper.launchStoreReview(context),
),
デモ
実際にこのコードを使用してListTileビューを実装し、以下のようなインターフェースを作成しました。
シミュレーターなので送信はできませんが、実際には送信後文章を書けたりします。
iOS さわやか待ち時間で利用できます