mcpField
R
revenuecat-identify-user

revenuecat-identify-user

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

revenuecat-identify-user について

アプリの認証システムとRevenueCatのユーザーIDを同期する開発スキルです。対応プラットフォームでのログイン、ログアウト、アカウント切り替え、匿名購入の扱いを案内します。

主な機能

  1. 01React Native、Flutter、KMP、Android、iOSを判別
  2. 02認証状態変更後のlogInを案内
  3. 03安全なログアウトとアカウント切り替え
  4. 04匿名購入の紐付けと検証を説明

活用シーン

  1. 01ログインユーザーをRevenueCatの購読者に対応付け
  2. 02サインアウトやアカウント切り替えの処理
  3. 03匿名購入がログイン後も紐付くことの検証

インストール

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

$npx skills add https://github.com/revenuecat/ai-toolkit --skill revenuecat-identify-user

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

同梱ファイル

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

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

詳細

revenuecat-identify-user:RevenueCat を認証システムに接続する

ユーザーが RevenueCat SDK で logIn / logOut を呼び出し、アプリのユーザーと RevenueCat のサブスクライバーを対応させたい場合に、このスキルを使用します。このスキルでは、SDK の初期セットアップ(integrate-revenuecat を参照)、購入(revenuecat-purchase-flow)、またはアクセス制御(revenuecat-entitlements-gate)は扱いません。

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. 共通の概念(すべてのプラットフォーム)

  • デフォルトでは匿名です。 logIn が呼び出される前に、RevenueCat は $RCAnonymousID: を接頭辞とする安定した匿名 ID を割り当てます。匿名状態で行われた購入は、初めて logIn に実際の appUserID を指定して呼び出したときに、その ID にエイリアスとして紐付けられるため、サインイン前にユーザーが購入しても購入が失われるリスクはありません。
  • メールアドレス、電話番号、連番のデータベース ID を appUserID に使用しないでください。 バックエンドのユーザー UUID やユーザー ID のハッシュなど、安定した不透明な値を使用してください。RevenueCat は ID を不透明な文字列として扱うため、後から変更するのは困難です。
  • 認証システムでセッションが確認された後に logIn を呼び出してください。 推測で logIn を呼び出さないでください。一般的な呼び出しタイミングは、認証状態のリスナーがサインイン済みユーザーを検知したときです。logIn は、ユーザーの現在の CustomerInfo と、このユーザーが RevenueCat にとって新規顧客かどうかを示す created: Boolean の両方を返します。
  • logOut は識別済みユーザーに対してのみ機能します。 SDK が匿名 ID の状態で logOut を呼び出すと、すべての SDK でエラー(PurchasesErrorCode.LogOutWithAnonymousUserError または iOS の同等のエラー)が発生します。独自の「サインイン済み」フラグで呼び出しを制御してください。
  • 購入の復元はログインではありません。 restorePurchases() はストアから現在のレシートを取得し、現在の RevenueCat ユーザーに紐付けます。ID は切り替わりません。ユーザーが新しいデバイスでサインインする場合は、まず logIn(appUserID) を呼び出し、現在のストアアカウントからレシートを取得する必要がある場合にのみ、その後 restorePurchases() を呼び出してください。
  • アカウントを切り替える場合は、logOut の後に logIn を呼び出します。 アプリでユーザーがサインアウトし、別のユーザーとして再度サインインできる場合は、まず logOut() を呼び出して完了を待ち、その後 logIn(newId) を呼び出してください。2 つの ID が互いにエイリアスとして紐付けられるため、2 回目の logIn を呼び出して直接切り替えようとしないでください。
  • 最初に設定してください。 logIn / logOut を呼び出す前に、Purchases.configure(…) が実行されている必要があります。実行されていない場合、SDK はエラーをスローします。

3. 実装

検出結果に一致するプラットフォームのファイルを読みます。

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

各プラットフォームのファイルでは、一般的な認証状態オブザーバーに logIn と logOut の呼び出しを組み込む方法を説明しています。

4. 検証

次の条件を満たすまでは、ID の同期が機能すると判断しないでください。

  1. RevenueCat ダッシュボードのテストユーザーの顧客ページに、$RCAnonymousID: のプレースホルダーではなく、バックエンドで使用しているものと同じ appUserID が表示されていること。
  2. サインアウトすると ID が新しい匿名ユーザーのものに戻り、別のアカウントでサインインすると、そのアカウントの購入情報に切り替わること(新しいアカウントの場合は何も表示されないこと)。
  3. 匿名の状態で購入した後に logIn を呼び出しても、その購入がサインインしたユーザーに引き継がれていること(失われず、エイリアスとして紐付けられていること)。
  4. すでに匿名の状態で logOut を呼び出した場合に、クラッシュや何も通知しない成功として扱われず、適切に処理されること。

コメント