目次
2段階レビュー促進機能
月謝管理アプリ「月謝袋」に、2段階レビュー促進機能を追加しました。
ユーザーに寄り添いながらレビューを集めるための仕組みです。
どんな機能?
主要な操作の節目に「使い心地はいかがですか?」というダイアログが表示されます。

「良い」を選んだ場合
iOS → App Store のレビュー画面へ
Android → Google Play のレビュー画面へ
プラットフォームを自動判定して遷移先を切り替えています。
「悪い」を選んだ場合

「送信」を押すとメールアプリが起動し、開発者宛にフィードバックが届きます。
低評価をストアに書かれる前に、直接受け取れる仕組みです。
表示タイミングの設計
ユーザーが「使い方を理解した」タイミングで表示するのがポイントです。
- 15回目のスタンプ押印後
- 5回目のカレンダー表示後
- 7回目の生徒登録後(今回は生徒登録への実装は見送り)
再表示ルール
| 状況 | 再表示タイミング |
|---|---|
| 何も選ばなかった(スキップ) | 3ヶ月後 |
| 「悪い」を選んだ | 6ヶ月後(改善を反映する時間を確保) |
| 「良い」を選んでレビュー済み | 二度と表示しない |
ステータスは shared_preferences でローカル保存しています。
技術的なポイント
iOS / Android の自動切り替え
final isAndroid = !kIsWeb && Platform.isAndroid;
final storeUrl = isAndroid
? 'https://play.google.com/store/apps/details?id=net.sinqwell.gessya'
: 'https://apps.apple.com/app/id6749873445?action=write-review';
Androidのメール送信
AndroidManifest.xml に <queries> を追加しないと canLaunchUrl が false を返してしまいます。
<queries>
<intent>
<action android:name="android.intent.action.SENDTO" />
<data android:scheme="mailto" />
</intent>
</queries>
また、Uri.parse('mailto:...') ではなく Uri() コンストラクタを使う方がAndroidで安定します。
final uri = Uri(
scheme: 'mailto',
path: '[email protected]',
query: 'subject=$subject&body=$body',
);
await launchUrl(uri);
おわりに
「悪い評価をストアに書かれる前にキャッチする」という2段階レビューの考え方は、
個人開発アプリのレビュー管理において非常に有効です。
サーバー不要・追加パッケージなしで実装できるので、
同じようにFlutterでアプリを作っている方にもおすすめです。
次回はAndroidのサブスクリプションテスト(RevenueCat)に取り組みます 🚀
