Skip to main content

Entitlements

Overview

Entitlements(エンタイトルメント)とは、RevenueCatにおける「ユーザーが購入によってアクセスできる権利・機能・コンテンツの定義」のこと。
特定のサブスクリプションや買い切り商品に紐付けることで、アプリ内でのアクセス制御やUI表示制御に活用できる。

✅ 概念の整理

用語意味
ProductApp 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)

  1. RevenueCat管理画面の「Product catalog」 > 「Entitlements」タブを開く
  2. + New entitlement をクリック
  3. 識別子(例: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の作成