RevenueCatでiOSのアプリ内サブスクを導入する手順
著者:Mehdi Azizi
更新・7 分
RevenueCatはApp Store Connectの商品をアプリにつなぎ、アクセス権を管理します。iOSで最初のサブスクを組み込む手順を解説します。
StoreKitだけでなくRevenueCatを使う理由
AppleのフレームワークであるStoreKitを使えば、サードパーティのサービスなしでサブスクリプションを販売できます。ただ、初心者が購入、復元、アクセス権の確認といったロジックをすべて自分で書くと、保守すべきコードがかなりの量になります。しかも、端末の変更、期限切れ、返金など、見落としやすいエッジケースがたくさんあります。
RevenueCatはApp Store Connectとアプリの間に入るサービスです。商品を読み込み、有効なサブスクリプションを管理してくれるので、この層を自分で書く必要がなくなります。価格やオファーはダッシュボードから管理でき、変更のたびにアプリを再公開する必要もありません。
ステップ1:App Store Connectで商品を作成する
RevenueCatの前に、Apple側に商品が存在している必要があります。App Store Connectでサブスクリプショングループを作成し、その中に期間(たとえば月額や年額)と地域ごとの価格を設定したレベルを1つ以上作ります。各プランについてユーザーに表示するテキストも入力してください。Appleは商品を審査で承認する前にこれを求めます。
この段階でよくある見落としがあります。商品を作成したのに、対応するバージョンと一緒にアプリの最初の審査に提出していないケースです。アプリの提出に一度も含まれていない保留中の商品は、RevenueCatからはすでに見えていても、ユーザーには表示されません。
ステップ2:RevenueCatをアプリに接続する
RevenueCatでプロジェクトを作成し、App Store ConnectのAPIキーを連携してRevenueCatが商品を自動で同期できるようにします。そのうえで「エンタイトルメント(entitlements)」、つまりアクセス権を定義します。エンタイトルメントはサブスクリプションで解放される内容(たとえばアプリのフルアクセス)を表すもので、どの商品がきっかけになったかには左右されません。
この間接的な仕組みが役に立ちます。あとでオファーの構成を変えるとき、たとえば年額プランを追加する場合でも、新しい商品を同じエンタイトルメントに紐づけるだけで済みます。アプリ内でアクセスを確認するコードには手を触れる必要がありません。
アプリ側では、React Native向けRevenueCat SDKを専用プラグインでExpoプロジェクトにインストールできます。現在のユーザーが有効なエンタイトルメントを持っているかを確認するシンプルな関数も用意されています。
ステップ3:ペイウォールを作る
ペイウォールはオファーを提示し、購入を開始する画面です。RevenueCatにはダッシュボードから設定できるペイウォールがあり、アプリを再公開せずに変更できます。デザインを完全にコントロールしたいなら、SDKを使って自作することもできます。
デザインと同じくらい配置も大切です。アプリの価値を体験する前に表示されるペイウォールは、最初のアクションが成功した直後に表示されるペイウォールより、一般的にコンバージョンが低くなります。技術的な組み込み以外にこの段階でよくある落とし穴は、初心者がやりがちなiOSペイウォールのミスで詳しく解説しています。
ステップ4:購入、復元、期限切れをテストする
いちばん手を抜かれがちなのに、Appleがいちばんよくチェックするのがこのステップです。提出前に、次の3つのシナリオが動作する必要があります。
購入。 Sandboxのテスターアカウントで購入すると、エンタイトルメントがすぐに解放される必要があります。また、アプリを再起動しなくてもその変化に反応しなければなりません。
復元。 新しい端末や再インストール後に同じApple Accountを使った場合、「購入を復元」ボタンで有効なサブスクリプションを取り戻せる必要があります。Appleは審査で必ずこの流れを確認します。ボタンがない、または正しく動かないことは、ガイドライン3.1.1に基づくよくあるリジェクト理由です。
期限切れ。 Sandbox環境では、サブスクリプションは数か月ではなく数分で期限切れになります。実際の請求サイクルを待たずに、期間終了後にアクセスが正しく閉じられるかを確認できます。
RevenueCatが代わりにしてくれないこと
RevenueCatが扱うのは購入の仕組みです。ストアページやペイウォールがガイドライン3.1.2に準拠しているかまでは面倒を見てくれません。App Storeの説明文でサブスクリプションを正しく説明し、正確な価格と期間を記載し、利用規約を用意するのは、引き続きあなたの仕事です。この技術的なステップに進む前に、iOSでサブスクか買い切りかのページで適切なモデルを選んでおきましょう。
また、RevenueCatは月間の売上が一定の基準を超えると、その売上に対して手数料を取ります。これはアプリ内で販売したサブスクリプションに対するAppleの手数料とは別にかかります。この2つの手数料を前提にビジネスモデルを組み立てる前に、RevenueCatの公式サイトで最新の料金体系を確認してください。
初心者によくあるミス
ローディング状態を忘れる。 起動時、RevenueCatがユーザーのアクセス権を取得するまでには少し時間がかかります。その応答が来る前にアプリが有料コンテンツをデフォルトで表示してしまうと、サブスクリプションを持たないユーザーが、一瞬とはいえ支払っていないコンテンツを見られてしまいます。楽観的なデフォルト表示ではなく、明示的なローディング状態を用意しましょう。
アクセス権を確認する場所を間違える。 有効なエンタイトルメントは、起動時に1回だけでなく、有料画面を開くたびに再確認する必要があります。アプリの使用中にユーザーが解約したりサブスクリプションが期限切れになったりしたら、次の画面にその変化が反映されなければなりません。
Sandbox環境と本番環境を混同する。 商品IDやSandboxのテスターアカウントは本番環境とは別物です。間違ったApple AccountでSandboxのテストが通ってしまったり、商品を本番環境にしか作っていなかったりすると、準備が整ったと勘違いしてしまうことがあります。
ビルドが通るだけでなく、検証済みのアプリへ
自分のアカウントでざっとテストして「動いた」サブスクリプションが、別の端末での復元や実際の期限切れでも正しく動くとは限りません。そして、Appleのレビュアーが確認するのはまさにそこです。iOSのアプリ内サブスクリプションのページでは、商品の作成から最終確認まで、この一連の流れ全体を詳しく解説しています。
ペイウォールとサブスクリプションがすでにコードに組み込まれた状態から始めたいなら、iOS Kitのスターターコードにそれが入っています。レビュアーと同じ目線でサブスクリプションを確認したいなら、Apple Review Kitに、提出前の私のチェックリストと、アプリ内課金についてテスターに残すメモをまとめています。
よくある質問
iOSでRevenueCatのサブスクリプションを導入するには?
4つのステップで進めます。まずApp Store Connectで商品を作成します。次にApp Store ConnectのAPIキーでRevenueCatを接続し、エンタイトルメント(アクセス権)を定義してから、ペイウォールを作ります。最後に購入、復元、期限切れをテストします。手を抜かれがちなステップですが、Appleは必ず確認します。
iOSでサブスクリプションを販売するのにRevenueCatは必須ですか?
いいえ。AppleのフレームワークであるStoreKitを使えば、サードパーティのサービスなしでサブスクリプションを販売できます。ただしその場合、購入、復元、アクセス権の確認のロジックをすべて自分で書くことになり、端末の変更、期限切れ、返金など見落としやすいエッジケースにも対応しなければなりません。RevenueCatはApp Store Connectとアプリの間に入り、この層を肩代わりしてくれます。
RevenueCatのエンタイトルメントとは何ですか?
エンタイトルメントはアクセス権のことです。サブスクリプションで解放される内容(たとえばアプリのフルアクセス)を表し、どの商品がきっかけになったかには左右されません。あとで年額プランを追加しても、新しい商品を同じエンタイトルメントに紐づけるだけです。アプリ内でアクセスを確認するコードは変更不要です。
Appleに提出する前にRevenueCatのサブスクリプションをテストするには?
提出前に3つのシナリオが動作する必要があります。購入:Sandboxのテスターアカウントで、アプリを再起動せずにすぐアクセスが解放されること。復元:新しい端末や再インストール後に同じApple Accountを使い、復元ボタンで有効なサブスクリプションを取り戻せること。期限切れ:Sandboxではサブスクリプションが数分で期限切れになるので、アクセスが閉じられることを確認できます。
RevenueCatで見えている商品がユーザーに表示されないのはなぜですか?
多くの場合、その商品がアプリの提出に一度も含まれていないためです。App Store Connectで作成したものの、対応するバージョンと一緒に最初の審査に提出していない商品は、RevenueCatからはすでに見えていても、ユーザーには表示されません。商品作成の段階でよくある見落としです。
RevenueCatはサブスクリプションに手数料を取りますか?
RevenueCatは、月間の売上が一定の基準を超えると、その売上に対して手数料を取ります。これはアプリ内で販売したサブスクリプションに対するAppleの手数料に上乗せされます。この2つの手数料を前提にビジネスモデルを組み立てる前に、RevenueCatの公式サイトで最新の料金体系を確認してください。