revenuecat-entitlements-gate について
RevenueCat の権限ゲートを実装する、マルチプラットフォームアプリ開発者向けのガイドです。プロジェクトのプラットフォームを判定し、一回限りの確認、変更リスナー、検証方法を説明します。
主な機能
- 01React Native、Flutter、KMP、Android、iOS の判定
- 02有効な権限の確認
- 03権限変更のリスニング
- 04権限識別子と商品 ID の区別
- 05ゲートと UI 更新の検証
活用シーン
- 01有効な権限に応じた機能の表示切り替え
- 02権限変更時の UI 更新
- 03権限識別子やリスナー設定の確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ revenuecat/ ai-toolkit --skill revenuecat-entitlements-gateインストール後、Claude Code で/revenuecat-entitlements-gateを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
platforms/android.mdflutter.mdios.mdkmp.mdreact-native.md詳細
revenuecat-entitlements-gate:RevenueCat のエンタイトルメントを確認する
アクティブな RevenueCat エンタイトルメントに基づいて、機能を表示するか非表示にするかを判断したい場合に、このスキルを使用します。このスキルでは、1 回限りの確認とリアクティブなリスナーを扱います。購入(revenuecat-purchase-flow を参照)や認証(revenuecat-identify-user を参照)は扱いません。
1. プラットフォームを特定する
作業ディレクトリを調べ、上から順に最初に一致したものを選びます。
- React Native:
package.jsonにreact-native-purchasesのエントリーがある、または依存関係にreact-nativeがある →platforms/react-native.mdを読みます。expoも依存関係にある場合は、Expo プロジェクトとして扱います。 - Flutter:プロジェクトルートに
pubspec.yamlがある →platforms/flutter.mdを読みます。 - Kotlin Multiplatform:
build.gradle.ktsにkotlin { … }のマルチプラットフォームソースセットブロックがある、またはcom.revenuecat.purchases:purchases-kmp*に依存している →platforms/kmp.mdを読みます。 - Android(ネイティブ):
build.gradle(.kts)でcom.android.applicationを適用している(かつ KMP ではない) →platforms/android.mdを読みます。 - iOS(ネイティブ):プロジェクトルートに
Package.swift、*.xcodeproj、*.xcworkspace、またはPodfileがある →platforms/ios.mdを読みます。
複数の条件に一致する場合(例:Flutter プロジェクト内に ios/ フォルダーがある場合)は、ビルドを管理する最も外側のプロジェクトを選びます。それでも判断できない場合は、設定するプラットフォームをユーザーに確認します。
2. 共通概念(すべてのプラットフォーム)
- プロダクト ID ではなく、エンタイトルメント識別子を確認します。 識別子(例:
"premium")は RevenueCat ダッシュボードで設定され、1 つ以上のプロダクトに紐付けられます。エンタイトルメントを使えば、アプリのコードを変更せずにプロダクト、価格、ストアを変更できます。 customerInfo.entitlements.activeが信頼できる情報源です。 エンタイトルメント識別子をキーとするMap<String, EntitlementInfo>です。activeに存在すれば、ユーザーは現在アクセスできます。存在しなければ、過去に購入したことがあってもアクセスできません。- 購入履歴を条件にしないでください。 期限切れのサブスクリプションは
customerInfo.entitlements.allには表示されますが、activeからは除外されます。activeのみを使用してください。 - 一度取得してから、変更を監視します。 最初の
customerInfo呼び出しはキャッシュ済みの値をすばやく返し、SDK はバックグラウンドでデータを更新します。すべての SDK は、エンタイトルメントが変更されたとき(購入、復元、更新、期限切れの後)に呼び出されるリスナーまたはストリームを提供します。ポーリングする代わりに、これを購読してください。 - SDK は先に設定しておく必要があります。
Purchases.configure(…)が実行されていない場合、エンタイトルメントの呼び出しは失敗します。このスキルを使用する前に、integrate-revenuecatを使って SDK をセットアップしてください。
3. 実装
特定したプラットフォームに対応するファイルを読みます。
platforms/ios.mdplatforms/android.mdplatforms/kmp.mdplatforms/flutter.mdplatforms/react-native.md
各プラットフォームのファイルには、1 回限りの確認、リアクティブな購読、および一般的なアプリでそれぞれを配置する場所が記載されています。
4. 検証
次の項目を確認するまで、ゲートが機能すると断言しないでください。
- アクティブなエンタイトルメントを持つユーザーには制限対象の機能が表示され、持たないユーザーには表示されないこと。
- エンタイトルメントの状態が変更されたとき(サンドボックスでの購入、またはダッシュボードでの手動付与でテストします)、手動で再起動しなくても UI が更新されること。これにより、リスナーが正しく接続されていることを確認できます。
- コード内のエンタイトルメント識別子が、RevenueCat ダッシュボードに存在する識別子と一致していること。ここに誤字があると、すべてのユーザーがアクセスできなくなります。
コメント
Markdown 対応