月謝袋アプリ、AndroidのRevenueCatサブスクが動きました!

目次

AndroidのRevenueCatサブスク

先日iOSで完成していたRevenueCatのサブスク購入フローを、
本日Androidでも動作確認することができました!


テスト環境の準備

Androidのサブスクテストには以下の3つが必要です。

Google Play Console側:

  • サブスク商品の作成(月額プラン)
  • ライセンステスターへのメールアドレス登録

RevenueCat側:

  • Android appのApp IDを パッケージネーム に設定
  • Google Playとの連携設定

コード側:

  • purchase_service.dart でプラットフォームを自動判定
if (Platform.isAndroid) {
  configuration = PurchasesConfiguration(_androidApiKey);
} else {
  configuration = PurchasesConfiguration(_iosApiKey);
}

テストの流れ

1. Firestoreの事前リセット

テスト前に is_premium: false に戻しておくことが重要です。
RevenueCatダッシュボードの購入履歴もクリアしておくとクリーンなテストができます。

2. アップグレードダイアログを表示

カレンダー画面を開くと、ロック画面が表示されます。
「プレミアムにアップグレード」をタップすると…

画面下部に 「🖊️ テスト用: 無料でアンロック」 の表示が!
RevenueCatがライセンステスターを正しく認識している証拠です。

3. Google Playの購入確認画面

プレミアムプラン
月謝袋アプリ

開始日: 今日         ¥300 / 5分
テストカード、常に承認
「請求が行われることはありません」

テスト購入では5分サイクルで更新されます(本番は1ヶ月)。
「定期購入」ボタンをタップ。

4. 購入完了 ✅

「定期購入しました ✅」の画面が表示され、
Firestoreを確認すると:

is_premium: true
premium_purchased_at: 2026年3月24日 10:37:27

カレンダー画面も自動でアンロックされました!


ハマりポイント:Entitlement IDの完全一致

RevenueCatのEntitlement IDはコードと完全一致が必要です。
スラッシュ・大文字小文字・スペースまで含めて一致させてください。

// NG例
static const String entitlementId = 'monthly_fee_stamp_pro';

// OK例(ダッシュボードのIdentifierをそのままコピー)
static const String entitlementId = 'SINQWELL/Monthly Fee Stamp Pro';

iOS・Android両対応完了

プラットフォーム購入フローFirestore保存カレンダー解放
iOS (Sandbox)✅✅✅
Android (テスト)✅✅✅

これで月謝袋アプリのサブスク機能が両プラットフォームで完成しました!


おわりに

RevenueCatを使えば、iOSとAndroidのサブスク処理を
ほぼ同じコードで実装できます。

個人開発者にとって、課金周りの実装は心理的ハードルが高いですが、
RevenueCatのおかげでかなりシンプルに実装できました。

次のステップはストアへの申請と、既存ユーザーへのアップデート配信です 🚀


目次