🐱

RevenueCat に必要なアプリ用共有シークレット と In-App Purchase Key の調査

2024/01/31に公開

iOS アプリで RevenueCat を使用する際に必要な アプリ用共有シークレット と In-App Purchase Key について、それらが何者なのか調査する。

RevenueCat

https://www.revenuecat.com/

RevenueCat はアプリ内課金を便利で簡単に実装できる SaaS。(個人で利用経験があるが、とても使いやすく便利で課金体系も明確だった。)

アプリ内課金はレシートの検証をしたり月額サブスクの更新など考えることが多いが RevenueCat はそこら辺を丸っとやってくれて、SDK のメソッドを一発叩くだけで購入済みかなどを取得できる。

RevenuCat を利用するためには App Store Connect と RevenuCat 間で情報のやり取りを行う必要があり、それに共有シークレットや In-App Purchase Key が必要となる。

アプリ用共有シークレットとは

https://www.revenuecat.com/docs/itunesconnect-app-specific-shared-secret

各アプリごとに発行する secret なので別アプリに影響はない。

サブスクリプションや App 内課金を検証する際の App と Apple のサーバ間のセキュリティを強化するために、レシート検証のリクエストに共有シークレットを含めてください。

共有シークレットとは、App Store Connect で生成される、32 個の英数字からなる 16 進数文字列です。すべての App に共通で使用できる単一コードの主要共有シークレットを生成することも、それぞれの App に個別の App 用共有シークレットを生成することもできます。また、一部の App に主要共有シークレットを使用し、その他の App には個別の App 用共有シークレットを使用することもできます。

アプリのレシート処理に共有シークレットを組み込む方法については、「Validating Receipts with the App Store」を参照してください。

https://developer.apple.com/jp/help/app-store-connect/configure-in-app-purchase-settings/generate-a-shared-secret-to-verify-receipts

In-App Purchase Key とは

https://www.revenuecat.com/docs/in-app-purchase-key-configuration

In-App Purchase Key まとめ

  • RevenueCat では StoreKit 2 を利用するよう最近改善され、プロモーションオファーの利用がなくても In-App Purchase Key が必須となった
  • In-App Purchase Key では課金に関する多くのことができそう
    • 何がどれだけできるのかまでは文章を読んでも詳細にはわからなかった
  • 安全に保管するもの。流出したら Revoke となる

In-App Purchase Key メモ

プロモーションオファーを利用するのに必須そう?

In-App Purchase Key is required. Signing promotional offers require In-App Purchase Key to be uploaded to Apphud.
https://docs.apphud.com/docs/promo-offers

An In-App Purchase Key is not required for Introductory Offers, only for Promotional Offers and Offer Codes. The Purchases SDK will automatically apply an introductory offer to a purchase. Documentation for reference.
https://www.revenuecat.com/docs/ios-subscription-offers

アプリ内課金に関する多くのことができてしまいそうだ。「適用対象は複数 App、個別の App、個別の App 内課金プロダクト」とあるが、アプリごとに権限を切るなどはできなさそうだった。アプリ全体に有効となるので注意が必要そう。

詳細に何がどこまでできるようになるかなどはわからない。

App 内課金キーを生成することで、Apple は App Store サーバ API や自動更新サブスクリプションのプロモーションオファーを含む App 内課金に関連するリクエストについて、クライアントとサーバ間、またはサーバ同士の認証および検証を行うことができます。App 内課金キーはアカウント用に作成され、適用対象は複数 App、個別の App、個別の App 内課金プロダクトです。

必要な役割: Account Holder または Admin。「役割の権限」を参照してください。

https://developer.apple.com/jp/help/app-store-connect/configure-in-app-purchase-settings/generate-keys-for-in-app-purchases/

10 こ生成できるのでとりあえず生成しても問題なさそう。

1つのキーが流出して Revoke することになっても他のアプリに影響がないように、アプリごとにキーを発行するのが良さそう (上限は10個ではあるので、課金アプリが増えたら再考の余地あり)

一度に最大 10 のアクティブな App 内課金キーを保持することができます。キーが失効することはなく、作成後に内容変更が可能です。

https://developer.apple.com/jp/help/app-store-connect/configure-in-app-purchase-settings/generate-keys-for-in-app-purchases/

安全に保管してくださいとある。一度しかダウンロードできない。

App 内課金キーはプライベートキーで、ダウンロード可能な回数は 1 回のみです。ダウンロード後は、安全な場所に保管してください。キーが紛失または侵害された場合は即時無効化し、必ずこのキーを使用するオファーを更新してください。

  1. 「ユーザとアクセス」で、「キー」をクリックして「App 内課金」を選択します。
  2. 「アクティブ」セクションで、ダウンロードしたいキーの「App 内課金キーをダウンロード」をクリックします。ダウンロードは 1 回のみ可能であることにご注意ください。
  3. ダイアログで、「ダウンロード」をクリックします。

https://developer.apple.com/jp/help/app-store-connect/configure-in-app-purchase-settings/generate-keys-for-in-app-purchases/

もし漏れてしまったら Revoke して再生成になる。

オファー検証の App 内課金キーが不要になった場合は、そのキーを無効化することができます。

  1. 「ユーザとアクセス」で、「キー」をクリックして「App 内課金」を選択します。
  2. 右上の「編集」をクリックします。
  3. 取り消したいキーを選択します。
  4. 右上で「キーを無効化」をクリックし、ダイアログで「無効化」をクリックします。無効化したキーは、元に戻すことはできません。

キーを無効化すると、そのキーに関連付けられているオファーをカスタマーが受け取れなくなります。このため、オファーの対応付けを必ず変更するようにしてください。「App Store Connect API」ページの「無効化済み」セクションに、過去 30 日間で無効化されたキーの一覧が表示されます。

https://developer.apple.com/jp/help/app-store-connect/configure-in-app-purchase-settings/generate-keys-for-in-app-purchases/

RevenueCat の管理画面には StoreKit 2 を使うので必須と書かれている。

Required for purchases validation through Apple’s StoreKit 2, invoice lookup, promotional offers, and other features. Issuer ID is required to enable all features.

結論

  • In-App Purchase Key は扱いに注意が必要だがRevenueCatを使用するには必要
  • Revoke した時の影響を考え、アプリごとに Key を発行する
  • Key は一度しかダウンロードできないので安全に保管しておく

Discussion