月謝袋アプリに「2段階レビュー促進機能」を実装しました

目次

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)に取り組みます 🚀


目次