Entitlements
Overview
Entitlements(エンタイトルメント)とは、RevenueCatにおける「ユーザーが購入によってアクセスできる権利・機能・コンテンツの定義」のこと。
特定のサブスクリプションや買い切り商品に紐付けることで、アプリ内でのアクセス制御やUI表示制御に活用できる。
✅ 概念の整理
| 用語 | 意味 |
|---|---|
| Product | App StoreやGoogle Play上の販売商品(例:1ヶ月プラン) |
| Entitlement | 購入で得られる「権利」や「機能群」の定義(例:Pro機能の解除) |
| Offering | アプリ内で提示される課金プランの集合 |
Entitlementは「Product IDの集合」に対する抽象的なアクセス権定義であり、
アプリコードでは「pro」「gold」などの識別子でシンプルに判定できます。
どんなときに使う?
- Pro版機能をサブスク購入者だけに提供したい
- 地域別の地図やステージなど、1回購入で恒久的に解除したい
- 複数の課金方法で同じ機能を提供したい(例:月額サブスク or 買い切り)
構造例
Entitlement: "pro"
├── Product: "monthly_pro_ios"
├── Product: "monthly_pro_android"
├── Product: "lifetime_pro_ios"
ユーザーが上記いずれかの商品を購入すれば "pro" の Entitlement がアクティブになります。
作成手順(UI)
- RevenueCat管理画面の「Product catalog」 > 「Entitlements」タブを開く
+ New entitlementをクリック- 識別子(例:
pro,gold)を入力し保存
Productとの紐付け
Entitlementは単体では意味を持たず、Productと紐付けることで初めて機能します。
- Entitlement画面から「Attach product」を選択
- すでに追加済みのProductを選んで紐付け
- 複数のProductを1つのEntitlementに紐付け可能
- 1つのProductで複数のEntitlementを解除することも可能
📌 過去購入ユーザーにも即時適用される点に注意!
🧠 設計のベストプラクティス
| パターン | 設計例 |
|---|---|
| 単一の課金機能 | Entitlementは1つ(例:pro) |
| 複数グレード | basic, premium, goldなどで分離 |
| エリア/機能単位解除 | map_japan, map_us, feature_ai_chatなどで分割 |
注意点
- Consumable(消費型)商品はEntitlementに紐付けないことが推奨されます(例:ゲーム内ライフ追加など)
- Entitlementに紐付け忘れると、購入しても機能が解除されずサポート負荷になる
🧪 SDKでの利用:状態チェック
FlutterなどSDKでは以下のようにしてEntitlementの状態を確認します:
final customerInfo = await Purchases.getCustomerInfo();
if (customerInfo.entitlements.all["pro"]?.isActive == true) {
// 機能を解除
} else {
// ペイウォールを表示
}
まとめ
- Entitlementsは「アクセス可能な機能群」を抽象化したラベル
- Productと正しく紐付けることで、ユーザー購入後の状態管理が超シンプルになる
- Offeringとは目的が異なるので混同に注意(Offering=UI表示単位)
👉 次のステップ:Offeringの作成