RevenueCat 内购
了解如何集成 RevenueCat 内购服务
EasyApp 提供了 RevenueCat 作为订阅管理服务。RevenueCat 对比 StoreKit2 有以下优势:
| 对比维度 | RevenueCat | StoreKit 2 |
|---|---|---|
| 跨平台支持 | ✅ iOS、Android、Web 等多平台统一管理 | ❌ 仅限苹果生态(iOS/macOS) |
| 高级功能 | 📊 数据分析、A/B 测试、Webhooks 等 | 🛠️ 仅基础 API,高级功能需自主开发 |
| 兼容性 | 📱 兼容 StoreKit 1 & 2,支持旧系统 | 🍏 仅支持 iOS 15+/macOS 12+ |
| 丰富的付费墙 | 🚀 可在 RevenueCat 中配置丰富的付费墙,无需重新审核发版 | 🐢 付费墙 UI 需要修改重新发版审核 |
| 实时数据 | 📊 内购实时数据同步 | 📊 需要第二天才能在 App Store Connect 中查看 |
RevenueCat的收费也非常友好,只有您的 App 月收入达到 2500 美元,才会收取 1% 的手续费。在这之下,您可以免费使用。
以下内容直到 接入RevenueCat服务 都是跟StoreKit2 文档 一致的。如果您已经在StoreKit2 文档 中配置了内购,那么您可以直接跳到接入RevenueCat服务。
在集成内购之前,您必须拥有有效的 Apple 开发者计划会员资格,并已签署付费应用程序协议

友情提醒,App Store Connect 是有做国际化的,网页会根据您的浏览器语言来自动显示国际化内容。
我们的文档会以英文为主,但是您仍然可以根据文档中的截图找到对应的中文语言下的操作。
在 App Store Connect 中添加内购
首先新建 App
在添加内购之前,您需要先创建您的 App,这是必须的。 我们登录到App Store Connect,点击顶部的"Apps",然后点击"+"按钮,创建您的 App。

在 New App 的弹窗中,您需要填写以下信息:
- Platform: 选择您的 App 的平台
您期望上架的 平台。选择 iOS, iPhone、iPad 都能下载(前提是您需要适配 iPad)
-
App Name: 您的 App 名称
-
Bundle ID: 您的 App 的 Bundle ID
您可以下拉选择, 请选择跟 XCode 工程中 对应的 Bundle ID。

-
填写 SKU 信息,(改信息仅对您自己可见) 可以填写 App 名称
-
权限选择: Full Access
-
点击 Create 按钮
续费订阅依赖订阅组,所以您需要先创建订阅组。
创建订阅组
- 选择左侧
Subscriptions,点击Create按钮以新建订阅组

- 填写您的订阅组名称,大多都是
Pro,Plus,VIP,Premium,Unlimited等名称。然后点击Create按钮

- 填写订阅组国际化信息, 我们就以英文/中文为例, 填写英文的订阅组名称, 以及订阅组描述。

订阅组国际化信息,AppStore 中会自定根据用户所在地区,显示对应的语言。
以下这张图片展示的就是 订阅组 相关信息

- 第一步:本地化:选择对应的语言
- 第二步:填写订阅组名称
- 第三步:App Name Display Options 选择: Use Custom Name, 因为你后续可能会修改 App 名称,所以这里选择 Use Custom Name
- 第四步:Create 保存

以 中文 为例

创建完成之后,您可以在这里查看和管理国际化信息

在订阅组下创建订阅
大多数情况下,我们创建的订阅都是续费订阅,也就是常见的年度订阅(年付/会员),月度订阅(月付/会员)、或者周订阅(周付/会员)。
那么我们就以年度订阅、月度订阅举例,同样的,您可以创建周订阅。步骤都是一样的
创建年度订阅
1. 创建订阅类型

接下来,系统会要求您提供一个参考名称和产品 ID
我们有必要对Reference Name和Product ID 进行解释,方便您更好的理解 App Store Connect 相关知识
-
Reference Name: Reference Name将用于 App Store Connect 及苹果的销售与趋势报告,但不会在 App Store 中向用户显示。建议使用易于理解的产品描述作为名称,且长度不得超过 64 个字符。
-
Product ID: 产品 ID 是一个唯一的字母数字标识符,用于在开发中访问您的产品并与 RevenueCat 同步。当您在 App Store Connect 中将某个产品 ID 用于一个产品后,即使该产品被删除,该 ID 也不能再用于您的任何其他应用。建议从一开始就保持条理性——我们推荐在所有产品标识符中使用统一的命名方案,例如:
<app>_<price>_<duration>_<intro duration><intro price>
针对上面的规范我们进一步解释:
- app(应用前缀):这是专属于您应用的唯一前缀,因为同一产品 ID 不能用于您未来创建的任何其他应用。
- price(价格):您计划以默认货币对该产品收取的费用。
- duration(订阅时长): 常规订阅周期的持续时间。
- intro duration(试用期时长): 如有试用期,则表示试用期的持续时间。
- intro price(试用价格):如有试用期,则表示默认货币下的试用价格。
在本例中,我想设置一个年费订阅,价格为 69 美元。按照这种格式,我将产品标识符设置为:
easyappswiftui_69_1y

在 App Store Connect 中对产品标识符使用一致的命名方案,可以为您将来节省时间,并仅通过标识符就能更轻松地组织和理解您的产品。
2. 设置订阅时长
在上一步点击 Save 后,我们要来设置订阅时长。年度会员,我们就选择 1 年 有效期
然后在设置Availability
Availability 就是 选择您的订阅服务在哪些国家/地区生效。

我们当然希望所有的国家/地区都能使用我们的订阅服务,所以这里就默认勾选全部。
点击Save按钮保存

3. 设置订阅价格
滚动网页找到Subscription Prices, 点击Add Subscription Prices按钮,来设置订阅价格

在 弹窗中,我们要设置 2 处 信息
- 第一处: 选择 国家/地区
- 第二处: 选择 价格

国家 我们首选选择 美国,以美元来结算
价格 我们选择 69 美元
如果您想找到更多的价格选择,就点击See Additional Prices按钮,选择您期望的价格

然后点击Next按钮

接下来,您会看到另外一个弹窗
在这个弹窗中,您可以根据国家/地区,来设置不同的价格。比如我对中国大陆地区设置为 ¥128 人民币

同样的,您也可以点击See Additional Prices按钮,选择您期望的价格
这里,App Store Connect非常贴心, 会根据您设置的美元价格,结合当前汇率,自动计算出其他国家/地区的对应价格。
设置完成之后,点击Next按钮、点击Confirm按钮
4. 设置订阅国际化信息
接下来需要设置的是 App Store 的本地化信息。这些是用户将看到的应用内购买名称和描述。
接着向下滚动网页,找到Localization, 点击Add Localization按钮

我们需要提供订阅显示名称和描述, 订阅显示名称和描述将在 App Store 及用户的订阅管理设置中显示。
拿我们刚才创建的 年度订阅 为例: 我们的订阅名称就是 Annual Subscription , 订阅描述就是 Unlimited access unlocks all features
在文档中,我们以 英文 和 中文 为例
首先 设置 英文 的 订阅显示名称和描述
填好之后,点击Add按钮

再来设置 中文 的 订阅显示名称和描述
- 选择中文
- 订阅显示名称: 年度订阅
- 订阅描述: 解锁所有高级功能

填好之后,点击Add按钮
创建完成之后,您可以在这里查看和管理国际化信息

5. 添加审核信息
继续向下滚动网页,找到Review Information
在 iOS 中设置应用内购买的最后一步是为审核人员添加信息。这包括一张截图和可选的审核备注。开发者常常会忽略截图,但没有截图就无法提交产品进行审核。
- Screenshot:供审核人员查看的应用内购买付费墙。测试期间,可在此处上传任意内容的 640×920 空白图片。提交审核前,请务必替换为实际付费墙界面图片。
- Review Notes:这是一个可选项,用于向审核人员说明与应用内购买相关的任何事项。(大多数情况下不需要填写)

在测试期间, 您可以下载这张图片,上传上去作为占位图。提交审核前,请务必替换为实际付费墙图片。

设置完成之后,点击右上角Save按钮保存,到此年度订阅创建完成。
接下来,我们按照创建年底订阅的步骤,来创建月度订阅。
创建月度订阅
我们回到订阅组预览页面,点击Subscriptions + 按钮,来创建月度订阅

此时的步骤,就完全跟创建年度订阅一样了。
您可以参考创建年度订阅的步骤来创建月度订阅
当然您也可以完全创建周订阅、季度订阅、半年订阅。 它们的步骤都是一样的。
记得要在这里选择正确的订阅时长哦😄

如果整个过程您都顺利完成,那么您应该会看到如下页面。您创建的所有订阅,都会在这里显示。

如果您想修改订阅信息,可以点击订阅名称,进入订阅详情页面。然后修改您期望的信息即可。

我们不能修改订阅的Product ID,即使该产品被删除,该 ID 也不能再用于您的任何其他应用, 这个是获取订阅信息的唯一标识符。如果您拿不准,请参考这里中的Product ID说明。
创建一次性购买(终身会员)
创建一次性购买的操作不依赖于订阅组。我们回到预览 App 的首页,点击In-App Purchases,点击Create按钮,来创建一次性购买

在弹窗中我们需要填入以下信息:

- Type: 选择
Non-Consumable, 代表 非消耗型商品
举个例子来帮您理解: 非消耗型商品 可以这么理解:比如我们开发识别图片的 App,用户的购买终身会员之后,可以永久使用该功能。 没有次数限制, 没有时间限制。
消耗型商品:比如我们设定用户可以购买 100 次识别机会,那么用户购买后,可以永久使用该功能。 但是次数用完之后,用户需要再次购买。
-
Reference Name和Product ID的填写,跟创建年度订阅中的Reference Name和Product ID的填写规则是一样的。 -
点击
Create按钮, 创建一次性购买,进入到 一次性购买 的详情页面
同样的我们需要根据创建年度订阅的规则来设置一次性购买的Availability、Price Schedule、App Store Localization、Review Information

最后不要忘记点击右上角Save按钮保存
成功之后,您可以在这里查看和管理一次性购买

恭喜您🎉🎉🎉,到这里,您已经完成了 App Store Connect 中订阅内购和一次性购买的创建。
接下来,我们再来注册RevenueCat账号(如果您还没有的话)。
接入RevenueCat服务
注册RevenueCat账号
RevenueCat的注册账户非常简单,您只需要按照注册流程正确填写您的信息即可。这里不在详细介绍。
我们将会重点介绍如何接入RevenueCat服务。
经过常规注册之后,您会看到下面这个页面:

RevenueCat的注册引导流程做的非常友好,从这里开始,需要您跟着下面的步骤一步步来。您会非常快速的完成RevenueCat的接入。
- 选择
Apple platform - 点击
Get Started
点击 Go To Team Keys 按钮, 我们会直接进入到App Store Connect 的 Team Keys 页面

设置 Team Keys
点击加号按钮, 来创建新的 Team Key

在弹窗中,填写以下信息:
- Name: 填写您的 Team Key 名称, 为了您更好区分 Name,推荐使用 您的 App 名称 + RevenueCat 的组合
- Access: 选择
App Manager

下载 p8 私钥文件
- 完成之后,您需要点击
Download按钮,来下载刚刚创建的私钥文件。
注意:该文件仅允许下载一次,请妥善保管。如果您不小心丢失,请按照上述流程重新创建一个新的 Team Key。
上传 p8 私钥文件
- 回到RevenueCat的页面,我们上传刚刚下载的私钥文件

设置 Issuer ID
上传成功之后,您需要填写Issuer ID

Issuer ID 的获取方式:
回到刚才的App Store Connect 的 Team Keys 页面,您可以看到Issuer ID

点击Copy按钮之后,粘贴到 RevenueCat 的页面中,然后点击Validate Keys按钮等待校验结果。

选择要集成的 App
校验完成之后,我们需要选择要集成的 App, 点击Next Step按钮

应用内购买配置
紧接上一步,来到这个页面,点击Go to In-App Purchase Keys按钮, 会自动跳转到 App Store Connect 的 In-App Purchase Keys 页面

点击+按钮, 来创建新的 In-App Purchase Key

在弹窗中,我们输入 Key的名称,为了您更好区分 Key,推荐使用 您的 App 名称 + RevenueCat + Key 的组合
注意:Name不能太长,不然 Apple 的接口会报错 😂

点击Generate按钮

成功之后,您会在这里看到您刚刚创建的 Key,并且点击下载

注意:该文件仅允许下载一次,请妥善保管。如果您不小心丢失,请按照上述流程重新创建一个新的 Key。
下载成功之后,回到 RevenueCat 的页面,在上传区域上传刚刚下载的p8私钥文件。其中Key ID 和 Issuer ID 会自动填充
点击Next按钮

RevenueCat会从App Store Connect中获取您的应用内购买信息,你会看到如下页面:

我们就用默认选中的Premium就行,它包含了我们创建的月度订阅、年度订阅、一次性购买等所有订阅。
点击Next按钮
到这里,您已经完成了RevenueCat的接入🎉🎉。
进下来,我们可以感受下RevenueCat设置内购页面的方便之处。(当然,您也可以跳过这一步,直接去 RevenueCat Dashboard 页面, 点击 Explore the Dashboard 区域,进入 Dashboard 页面)

设置付费墙
点击New paywall按钮

在弹窗中,Offering选择default即可。RevenueCat 会为我们创建一个名为default的Offering。
您可以在这里看到超多付费墙的样式,(当然您也可以完全从 0 开始创建一款自己喜欢的付费墙样式)

滚动到页面最下方,我们选中带有隐私协议和服务条款的付费墙样式进行编辑

非常重要: 根据 App Store 审核指南要求,为了不被拒审,建议您在内购页面添加您的隐私协议和服务条款。
- 进入付费墙编辑页面,设置我们的付费墙名字

- 用同样的方式分别设置您的隐私协议和服务条款

- 我们发现这个付费墙样式,没有 终身会员 的选项,我们可以复制一个付费墙样式,然后进行编辑

选中Package 区域,拉下选中Lifetime选项

然后再修改 文案即可

除此之外,您还可以编辑更多内购样式/信息, 也可以修改更多价格参数,详情参考变量
- 最后,发布我们的付费墙,成功之后,退出编辑页面

如果您一切顺利,您会看到如下页面

关于更多RevenueCat相关知识,请参考RevenueCat 文档
配置RevenueCat的apiKey 和 entitlementID
- 获取 apiKey
点击左侧栏的API Keys, 然后点击Show Key

点击Copy按钮,复制 apiKey,粘贴到您的项目中
- 获取 entitlementID
点击左侧栏的Products catalog, 然后点击Entitlements, 然后复制Identifier , 粘贴到您的项目中

回顾下,我们需要在哪里配置RevenueCat的apiKey和entitlementID?
enum Constants {
// ... 其他配置
enum RevenueCat {
/// The API key for your app from the RevenueCat dashboard: https://app.revenuecat.com
static let apiKey = "your revenuecat api key"
/// The entitlement ID from the RevenueCat dashboard that is activated upon successful in-app purchase for the duration of the purchase.
static let entitlementID = "your revenuecat entitlement id"
// Proxies & configuration for users in Mainland China
// https://www.revenuecat.com/docs/getting-started/configuring-sdk
static let ChinaProxyURL = "https://api.rc-backup.com/"
}
// ... 其他配置
}恭喜您🎉🎉🎉,到这里,您已经完成了RevenueCat的接入。
接下来,我们需要检验下我们的成果。
友情提醒:如果您跳过了注册指引,请参考以下步骤接入RevenueCat服务
测试内购
在开发阶段,内购都是在沙盒中进行测试的。进行购买时,不会真正扣费。
请使用真机进行测试,不要使用模拟器。
- 首先我们需要在 App Store Connect 的
Users and Access创建一个沙盒测试账号
如果您已经有测试账号按照如下图所示:

点击+按钮, 来创建一个沙盒测试账号,
如果您没有测试账号, 第一次创建,请按照如下图所示:

在后续弹窗中输入您的测试账号相关信息,然后点击Create按钮保存即可。

- 真机运行App,内购测试
Next Steps
最后强烈建议您查看App Store Connect Help 文档(App Store Connect Help中文地址)、RevenueCat 文档 来学习更多关于 内购 的知识。
Last updated on
