mcpField
R
revenuecat-entitlements-gate

revenuecat-entitlements-gate

github.com/revenuecat開発76856 回インストール1 日前に更新
リポジトリ

revenuecat-entitlements-gate について

RevenueCat の権限ゲートを実装する、マルチプラットフォームアプリ開発者向けのガイドです。プロジェクトのプラットフォームを判定し、一回限りの確認、変更リスナー、検証方法を説明します。

主な機能

  1. 01React Native、Flutter、KMP、Android、iOS の判定
  2. 02有効な権限の確認
  3. 03権限変更のリスニング
  4. 04権限識別子と商品 ID の区別
  5. 05ゲートと UI 更新の検証

活用シーン

  1. 01有効な権限に応じた機能の表示切り替え
  2. 02権限変更時の UI 更新
  3. 03権限識別子やリスナー設定の確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/revenuecat/ai-toolkit --skill revenuecat-entitlements-gate

インストール後、Claude Code で/revenuecat-entitlements-gateを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

platforms/
android.md
flutter.md
ios.md
kmp.md
react-native.md

詳細

revenuecat-entitlements-gate:RevenueCat のエンタイトルメントを確認する

アクティブな RevenueCat エンタイトルメントに基づいて、機能を表示するか非表示にするかを判断したい場合に、このスキルを使用します。このスキルでは、1 回限りの確認とリアクティブなリスナーを扱います。購入(revenuecat-purchase-flow を参照)や認証(revenuecat-identify-user を参照)は扱いません。

1. プラットフォームを特定する

作業ディレクトリを調べ、上から順に最初に一致したものを選びます。

  1. React Native:package.json に react-native-purchases のエントリーがある、または依存関係に react-native がある → platforms/react-native.md を読みます。expo も依存関係にある場合は、Expo プロジェクトとして扱います。
  2. Flutter:プロジェクトルートに pubspec.yaml がある → platforms/flutter.md を読みます。
  3. Kotlin Multiplatform:build.gradle.kts に kotlin { … } のマルチプラットフォームソースセットブロックがある、または com.revenuecat.purchases:purchases-kmp* に依存している → platforms/kmp.md を読みます。
  4. Android(ネイティブ):build.gradle(.kts) で com.android.application を適用している(かつ KMP ではない) → platforms/android.md を読みます。
  5. 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.md
  • platforms/android.md
  • platforms/kmp.md
  • platforms/flutter.md
  • platforms/react-native.md

各プラットフォームのファイルには、1 回限りの確認、リアクティブな購読、および一般的なアプリでそれぞれを配置する場所が記載されています。

4. 検証

次の項目を確認するまで、ゲートが機能すると断言しないでください。

  1. アクティブなエンタイトルメントを持つユーザーには制限対象の機能が表示され、持たないユーザーには表示されないこと。
  2. エンタイトルメントの状態が変更されたとき(サンドボックスでの購入、またはダッシュボードでの手動付与でテストします)、手動で再起動しなくても UI が更新されること。これにより、リスナーが正しく接続されていることを確認できます。
  3. コード内のエンタイトルメント識別子が、RevenueCat ダッシュボードに存在する識別子と一致していること。ここに誤字があると、すべてのユーザーがアクセスできなくなります。

コメント