mcpField
R
revenuecat

revenuecat

github.com/rawveg開発40283 回インストール37 週間前に更新
リポジトリ

revenuecat について

revenuecat は、iOS、Android、Flutter、React Native などのアプリでサブスクリプションやアプリ内課金を実装する開発者向けスキルです。SDK 設定、購入フロー、権限確認、サーバー側 API の利用を扱います。

主な機能

  1. 01複数プラットフォームの SDK 設定
  2. 02サブスクリプションとアプリ内課金
  3. 03エンタイトルメントと顧客情報の確認
  4. 04オファリングと商品の取得
  5. 05購入復元と REST API

活用シーン

  1. 01アプリへのサブスクリプション導入
  2. 02権限に基づくプレミアムコンテンツの制御
  3. 03リモート設定された商品選択肢の表示
  4. 04購入復元とサーバー側検証の処理

インストール

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

$npx skills add https://github.com/rawveg/skillsforge-marketplace --skill revenuecat

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

同梱ファイル

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

plugin.json
references/
index.md
other.md

詳細

RevenueCat スキル

iOS、Android、Flutter、React Native、ウェブの各プラットフォームで RevenueCat を使用して、アプリ内サブスクリプションや購入を実装するための専門的なサポートです。

このスキルを使用するタイミング

次のような場合に、このスキルを使用してください。

  • SDK のセットアップ:iOS、Android、Flutter、React Native アプリで RevenueCat SDK を初期化する
  • サブスクリプションの実装:サブスクリプションまたはアプリ内購入機能を追加する
  • エンタイトルメントの確認:プレミアム機能やコンテンツへのユーザーアクセスを確認する
  • 購入フロー:購入ボタンを実装する、取引を処理する、または購入を処理する
  • 購入の復元:デバイスを変更するユーザー向けに復元機能を追加する
  • オファリング/商品:サブスクリプションの選択肢や商品カタログを取得して表示する
  • ペイウォールの設計:ペイウォールや購入画面を構築または設定する
  • 顧客情報:サブスクリプションの状態や顧客データを取得する
  • 購入のデバッグ:サブスクリプションの問題や取引の失敗をトラブルシューティングする
  • REST API の統合:サーバー側でサブスクリプションを検証する、または Webhook を処理する

クイックリファレンス

SDK の設定

Swift(iOS)

import RevenueCat

Purchases.logLevel = .debug
Purchases.configure(withAPIKey: "your_public_api_key", appUserID: "user_123")

Kotlin(Android)

Purchases.logLevel = LogLevel.DEBUG
Purchases.configure(PurchasesConfiguration.Builder(this, "your_public_api_key").build())

Flutter

await Purchases.setLogLevel(LogLevel.debug);
PurchasesConfiguration configuration = PurchasesConfiguration("your_public_api_key");
await Purchases.configure(configuration);

React Native

Purchases.setLogLevel(Purchases.LOG_LEVEL.DEBUG);
Purchases.configure({ apiKey: "your_public_api_key" });
エンタイトルメントの確認

Swift

let customerInfo = try await Purchases.shared.customerInfo()
if customerInfo.entitlements["pro"]?.isActive == true {
    // User has premium access
}

Kotlin

Purchases.sharedInstance.getCustomerInfoWith(
    onSuccess = { customerInfo ->
        if (customerInfo.entitlements["pro"]?.isActive == true) {
            // User has premium access
        }
    }
)

React Native

const customerInfo = await Purchases.getCustomerInfo();
if (customerInfo.entitlements.active["pro"] !== undefined) {
    // User has premium access
}
オファリングの取得

Swift

Purchases.shared.getOfferings { (offerings, error) in
    if let packages = offerings?.current?.availablePackages {
        self.display(packages)
    }
}

Kotlin

Purchases.sharedInstance.getOfferingsWith({ error -> }) { offerings ->
    offerings.current?.availablePackages?.let { packages ->
        // Display packages
    }
}
購入の実行

Swift

Purchases.shared.purchase(package: package) { (transaction, customerInfo, error, userCancelled) in
    if customerInfo.entitlements["pro"]?.isActive == true {
        // Unlock premium content
    }
}

Kotlin

Purchases.sharedInstance.purchase(
    packageToPurchase = aPackage,
    onError = { error, userCancelled -> },
    onSuccess = { storeTransaction, customerInfo ->
        if (customerInfo.entitlements["pro"]?.isActive == true) {
            // Unlock premium content
        }
    }
)
購入の復元

Swift

Purchases.shared.restorePurchases { customerInfo, error in
    // Check customerInfo to see if entitlement is now active
}

Kotlin

Purchases.sharedInstance.restorePurchases(
    onError = { error -> },
    onSuccess = { customerInfo ->
        // Check customerInfo to see if entitlement is now active
    }
)
REST API - 顧客情報の取得
curl --request GET \
  --url https://api.revenuecat.com/v1/subscribers/app_user_id \
  --header 'Authorization: Bearer PUBLIC_API_KEY'

主な概念

エンタイトルメント

ユーザーが利用する「権利」を持つ機能やコンテンツ、アクセスレベルです。多くのアプリでは、単一のエンタイトルメント(例:「pro」)を使用します。RevenueCat ダッシュボードで作成し、商品にリンクします。商品が購入されると、関連付けられたエンタイトルメントが有効になります。

オファリング

ユーザーが利用できる商品のセットです。ダッシュボードでリモート設定することで、アプリを更新せずに利用可能な商品を変更できます。デフォルトのオファリングには offerings.current からアクセスします。

パッケージ

オファリング内の商品をまとめたものです。.monthly、.annual、.lifetime などの便利なアクセサーが用意されています。各パッケージには、価格の詳細を含む storeProduct があります。

CustomerInfo

ユーザーのすべてのサブスクリプションと購入データを含む中心的なオブジェクトです。getCustomerInfo() で取得するか、購入後に返されます。アクセス確認に使用する entitlements ディクショナリを含みます。

アプリユーザー ID

各ユーザーを識別する一意の ID です。設定時に指定することも、匿名 ID として自動生成することもできます。デバイス間で購入を同期するために使用します。

リファレンスファイル

このスキルには、references/ 内に包括的なドキュメントが含まれています。

  • other.md - RevenueCat の一般的なドキュメントと概要

クイックリファレンス以外の詳しい実装パターンについては、公式ドキュメント https://www.revenuecat.com/docs/ を参照してください。

このスキルの使い方

初心者向け
  1. アプリの初期化コードで SDK を設定します
  2. RevenueCat ダッシュボードでエンタイトルメントとオファリングを作成します
  3. プレミアムコンテンツを表示する前に、簡単なエンタイトルメント確認を実装します
  4. purchase(package:) を使用して購入ボタンを追加します
  5. App Store の要件に準拠するため、「購入を復元」ボタンを含めます
中級ユーザー向け
  • オファリングを取得してパッケージを表示し、動的なペイウォールを実装します
  • 複数のエンタイトルメントを処理し、段階的なアクセスレベルを実現します
  • 顧客情報リスナーを設定し、サブスクリプションの更新をリアルタイムで取得します
  • REST API を使用してサーバー側で検証します
上級ユーザー向け
  • サーバー側でイベントを処理するために Webhook を設定します
  • 異なるオファリングを使用して A/B テストを実装します
  • 分析およびアトリビューションプラットフォームとの統合を設定します
  • 猶予期間や課金の再試行などの例外ケースに対応します

一般的なパターン

ペイウォールの表示ロジック
// Show paywall only if user doesn't have active subscription
if customerInfo.entitlements["pro"]?.isActive != true {
    showPaywall()
}
条件付きオファリング
if user.isPaidDownload {
    packages = offerings?.offering(identifier: "paid_download_offer")?.availablePackages
} else {
    packages = offerings?.current?.availablePackages
}

重要な注意事項

  • アプリのライフサイクルの早い段階で、必ず SDK を初期化してください
  • 開発中はデバッグログを使用してください(Purchases.logLevel = .debug)
  • SDK はトランザクションを自動的に完了/確認します
  • restorePurchases は、ボタンのタップなど、ユーザーの操作があった場合にのみ呼び出してください
  • Project Settings の公開 API キーを使用し、シークレットキーは決して公開しないでください
  • Test Store を使えば、実際に課金することなく開発テストを行えます

リソース

公式ドキュメント
references/

詳細な説明とコード例を含む、公式ソースから抽出したドキュメントを整理して格納します。

scripts/

よく使う自動化タスク用のヘルパースクリプトを追加します。

assets/

テンプレート、ボイラープレート、またはサンプルプロジェクトを追加します。

コメント