__CAPGO_KEEP_1__ 购买插件已转移到 RevenueCat 官方仓库。 请参阅 官方文档 获取更多信息
Capacitor 购买是为 Capacitor 框架开发的插件,支持 iOS 和 Android 的内购功能。它提供了一个简单、统一的 API,使开发者能够轻松地在移动应用中实现内购和订阅功能。
Capacitor 购买插件的关键功能之一是它与 RevenueCat 集成,RevenueCat 是一个提供内购和订阅工具的平台。RevenueCat 简化了实现内购和订阅的过程,提供了一个简单、统一的 API,并自动化了如验收凭证和用户管理等任务。
使用 RevenueCat,开发者可以轻松地管理订阅、跟踪收入和执行其他相关任务。RevenueCat 提供的功能包括:
- 自动验收凭证
- 用户管理
- 自定义定价模型支持
- 详细分析 -可扩展性
使用 Capacitor 购买插件和 RevenueCat,开发者可以节省时间和精力,实现内购和订阅功能,并提供额外的功能来改善用户体验和增加收入。
使用 Capacitor 购买插件和 RevenueCat,开发者可以轻松地管理和跟踪内购和订阅,验收凭证,管理用户,并创建自定义定价模型和获取详细分析以改善性能和收入。
安装
请确保使用最新版本的 Capacitor 和 Capacitor 购买插件。您可以在 Capacitor 网站上查看最新版本的 Capacitor 和 Capacitor 购买插件。
要安装 Capacitor 购买插件,请运行以下命令:
npm i @capgo/capacitor-purchases
在您的应用程序的本机 code 中添加插件
npx cap sync
在 Xcode 中添加内购功能:
然后

1. 创建 RevenueCat 账户
本指南将指导您如何使用订阅和 RevenueCat 的 SDK,仅需几行 code。
注册新 RevenueCat 账户 在这里.
📘
💡 这是一个小提示!
RevenueCat 建议为每个应用程序/项目创建一个单独的 RevenueCat 帐户,尤其是如果您打算出售该应用程序。这将加快转移过程,因为您可以一次性转移整个帐户,而不是等待 RevenueCat 支持人员转移单个项目。
组织/企业
我们建议在注册 RevenueCat 和设置应用程序时使用公司帐户。您将能够邀请您的团队成员加入您的项目,但 只有项目负责人才能管理账单 项目协作者无法管理账单细节。 2. 项目和应用程序配置▶️ 创建一个项目
前往 RevenueCat 控制台并
添加一个新项目
▶️ Navigate to the RevenueCat dashboard and add a new project 从顶部导航菜单的下拉菜单中 项目.

创建新项目的弹出窗口
▶️ 添加 App / 平台
来自 项目设置 > 应用 在项目仪表板的左侧菜单中,选择要添加的应用的平台。

选择应用平台的项目仪表板
字段 应用名称 __CAPGO_KEEP_0__

RevenueCat 步骤 3
📘
Apple App Store 应用程序的应用程序配置页面
💡 这是一个提示! 注册应用程序后,RevenueCat 建议设置平台服务器通知 . 这些通知并非必需,但会加快 webhooks
📘
和集成交付时间,减少更新订阅者的延迟时间。
测试和生产应用程序和用户
RevenueCat 本身并不具备单独的测试和生产环境。相反,针对用户的底层交易是通过沙盒和生产环境来区分的。
此外,用户不受环境的影响。同一用户可以同时拥有激活的沙盒购买和激活的生产购买。
▶️ 服务凭证
为了让RevenueCat能够代表您与应用商店进行通信,需要设置服务凭证。请参阅RevenueCat指南 App Store Connect 共享密钥, Play Service 凭证以及 Amazon Appstore 共享密钥 获取更多信息。
请注意,Play Service 凭证可能需要花费多达36小时才能在Google服务器上传播。
3. 产品配置
▶️ 商店设置
在使用RevenueCat获取产品之前,您必须在各个商店中配置您的产品。请参阅以下指南 App Store Connect, Google Play Console, Amazon Appstore, 和 Stripe 为帮助您在此过程中导航。
如果您正在销售iOS产品,请务必签署您的‘付费应用程序协议’并在 App Store Connect > 协议、税务和银行. 需要在测试任何购买之前完成.
📘
想在测试中跳过商店设置吗?
在iOS上,可以通过使用StoreKit配置文件来延迟配置App Store Connect中的产品。这些配置文件需要最少的设置,并且可以通过Xcode直接配置。
有关在RevenueCat中设置StoreKit配置文件的更多信息,请阅读 沙盒测试 指南。
▶️ 在 RevenueCat 中配置产品和许可
您在 App Store Connect、Google Play Console、Amazon Appstore 或 Stripe 中配置了应用内产品后,需要将该配置复制到 RevenueCat 控制台中。RevenueCat 使用许可系统来控制对高级功能的访问,以及 Offerings 来管理您向客户提供的产品集。 许可是客户在购买特定产品后获得的访问权限等级。 Offerings 是一种简单的方式,让您可以组织您想要在付费墙上提供的应用内产品,并远程配置它们。RevenueCat 建议, ▶️ 在 RevenueCat 中配置产品和许可, ▶️ 在 RevenueCat 中配置产品和许可▶️ 在 RevenueCat 中配置产品和许可 ▶️ 在 RevenueCat 中配置产品和许可▶️ 在 RevenueCat 中配置产品和许可
▶️ 在 RevenueCat 中配置产品和许可 ▶️ 在 RevenueCat 中配置产品和许可 利用这些功能来简化您的code,并使您能够在不发布应用程序更新的情况下更改产品。
See 配置产品 配置产品并将其组织到Offerings或Entitlements中。

4. 使用RevenueCat的PurchasesSDK
RevenueCatSDK可以无缝地在各个平台上实现购买和订阅,同时与RevenueCat服务器同步令牌。
如果您遇到与SDK相关的问题,请参阅 Troubleshooting the SDKs Troubleshooting the SDKs
📘
仅使用您的公共SDK密钥来配置Purchases
您可以从中获取您的公共SDK密钥 API 键 在项目设置 项目设置 在仪表盘中。
您应该只配置__CAPGO_KEEP_0__的共享实例,通常在应用启动时。随后,同一实例在您的应用中通过访问__CAPGO_KEEP_0__实例来共享。 收入 了解更多信息和最佳实践,请参阅 .shared instance in the SDK.
配置__CAPGO_KEEP_0__ Configuring SDK RevenueCat 指南
配置__CAPGO_KEEP_0__ 仅使用您的公共__CAPGO_KEEP_0__密钥。您可以阅读有关RevenueCat可用的不同__CAPGO_KEEP_1__密钥的更多信息 with your public SDK key only. You can read more about the different API keys available in RevenueCat RevenueCat认证指南.
import { CapacitorPurchases } from '@capgo/capacitor-purchases'
import { isPlatform } from '@ionic/vue' // use the right one for your framework
CapacitorPurchases.setDebugLogsEnabled({ enabled: import.meta.env.DEV }) // Enable to get debug logs in dev mode
if (isPlatform('ios')) {
CapacitorPurchases.setup({ apiKey:'appl_******'})
} else if (isPlatform('android')) {
CapacitorPurchases.setup({ apiKey:'goog_******'})
}
在开发环境中,RevenueCat建议启用更详细的调试日志。有关这些日志的更多信息,请参阅 调试指南 如果您打算使用RevenueCat与您的现有购买__CAPGO_KEEP_0__一起,请参阅
If you’re planning to use RevenueCat alongside your existing purchase code, refer to their guide on 使用用户ID配置购买.
📘
如果您在应用中有用户身份验证系统,则可以在配置时或稍后使用
调用提供用户标识符。要了解更多信息,请参阅
.logIn()RevenueCat关于 用户识别.
The SDK 将自动从 Apple、Google 或 Amazon 等平台获取配置的产品并获取产品信息。因此,当客户打开您的购买屏幕时,已有的产品信息将已经加载。 已配置的产品 当客户打开您的购买屏幕时,已有的产品信息将已经加载。
以下是获取 Offerings 的示例。您可以使用 Offerings 来组织您的付费墙屏幕。有关更多信息和最佳实践,请参阅 RevenueCat 指南。 ▶️ 获取和显示可用产品 使用用户 ID 配置购买
如果您的应用程序有用户身份验证系统,则可以在配置时或稍后通过调用提供用户标识符。要了解更多信息,请参阅 RevenueCat 指南。
📘
使用用户 ID 配置购买
The __CAPGO_KEEP_0__ 将自动从
.logIn()已配置的产品 当客户打开您的购买屏幕时,已有的产品信息将已经加载。.
The SDK will automatically fetch the __CAPGO_KEEP_0__ 从 Apple、Google 或 Amazon 等商店获取产品信息。因此,当客户打开购买屏幕时,已有的产品将会自动加载。
以下是 Offerings 的示例获取方法。您可以使用 Offerings 来组织您的付费墙屏幕。请参阅 RevenueCat 的指南 显示产品 有关更多信息和最佳实践,请参阅
const { offerings } = await CapacitorPurchases.getOfferings()
if (offerings.current !== null) {
// Display current offering with offerings.current
}
如果您无法获取 Offerings, 产品或可用 包 为空,则可能是由于相关商店的配置问题。App Store Connect 中最常见的原因是
付费应用协议
您可以在RevenueCat中找到有关解决此问题的更多信息 帮助中心.
▶️ 进行购买
The SDK包含了一个简单的方法来促进购买。 The purchase:package 从Offering中获取一个包并使用相应的应用商店处理交易。
以下示例code显示了购买一个包并确认它解锁“your_entitlement_id”内容的过程。有关 purchase:package 方法的更多详细信息,请参阅RevenueCat的 Making Purchases.
const purchase = async (p: Package): Promise<PurchaserInfo | null> => {
try {
// console.log('purchase', p)
const data = await CapacitorPurchases.purchasePackage({
identifier: p.identifier,
offeringIdentifier: p.offeringIdentifier,
})
const purchaserInfo = data.purchaserInfo
// console.log('listenBuy', purchaserInfo)
if (purchaserInfo.activeSubscriptions.includes(p.identifier)) {
// set the user as paid
}
return purchaserInfo
}
catch (e) {
console.error('listenBuy error', e)
}
return null
}
▶️ 检查订阅状态
您可以在需要时使用此方法来获取最新状态,并且安全地在应用程序的整个生命周期中反复调用。 购买 自动缓存最新状态 CustomerInfo 无论何时更新 — 所以在大多数情况下,这个方法从缓存中拉取并运行非常快。
通常在决定显示哪个 UI 组件给用户以及用户执行需要特定权限的操作时调用这个方法。
📘
💡 这是一个小技巧!
您可以访问有关订阅的更多信息,除了是否有效之外。查看 订阅状态 了解订阅是否设置为续订、用户信用卡是否存在问题等更多信息。
RevenueCat 允许您的用户恢复他们的应用内购买,重新激活他们之前从同一商店账户(Apple、Google 或 Amazon)购买的任何内容。我们建议所有应用都提供一些方法让用户触发恢复方法。请注意,Apple 需要在用户无法访问他们购买的内容(例如卸载/重新安装应用、丢失账户信息等)时提供恢复机制。 如果两个不同 应用用户 ID
const res = await CapacitorPurchases.restoreTransactions()
const purchaserInfo = res.purchaserInfo
const ids: string[] = [] // extract active subscriptions ids
purchaserInfo.activeSubscriptions.forEach((id) => {
ids.push(id)
})
从同一底层商店账户(Apple、Google 或 Amazon)恢复交易。 RevenueCat 可能会尝试在两个应用用户 ID 之间创建一个别名,并将它们视为同一用户。 RevenueCat 指南 在 恢复购买 有关不同可配置恢复行为的更多信息。
由于SDK在任何平台上都能无缝工作,用户购买信息的变化可能来自各种来源。您可以通过遵循可选委托方法来响应任何客户信息的变化。 CustomerInfo 此方法将在__CAPGO_KEEP_0__接收到来自、或的更新 purchases:receivedUpdated:.
This method will fire whenever the SDK receives an updated CustomerInfo 不会 getCustomerInfo(), purchase(package:), purchase(product:)从RevenueCat后端推送到您的应用程序的更新只能通过从RevenueCat发出的出站网络请求发生,如上所述。 restorePurchases().
根据您的应用程序,忽略委托并简单地在下次启动应用程序或__CAPGO_KEEP_0__方法的完成块中处理客户信息的变化可能足够。 您成功了! __CAPGO_KEEP_0__接收到来自、或的更新
Depending on your app, it may be sufficient to ignore the delegate and simply handle changes to customer information the next time your app is launched or in the completion blocks of the SDK methods.
CapacitorPurchases.addListener('purchasesUpdate', (data) => {
console.log('purchasesUpdate', data)
})
👍
您可以通过遵循可选委托方法来响应任何客户信息的变化
You have now implemented a fully-featured subscription purchasing system without spending a month writing server code. Congrats!
示例应用
要下载更多关于如何整合SDK的完整示例,请访问RevenueCat示例应用资源。
我将很快发布一个使用Capacitor和Vue.js的示例应用。
如果您需要深入使用Capacitor,SDK请查看文档 这里.
下一步
\
- 如果您还没有,请确保您的产品已正确配置,查看RevenueCat关于权益的指南 如果您想使用自己的用户标识符,请阅读关于.
- 设置应用用户ID 下一步 .
- 如果您正在从其他系统转移到RevenueCat,请参阅RevenueCat关于 迁移您的现有订阅的指南.
- 一旦您准备好测试您的集成, 您可以遵循RevenueCat关于.
- 测试和调试的指南 如果您符合App Store Small Business Program的资格,请参阅RevenueCat关于
如何申请并通知RevenueCat的指南
如果您需要在应用中实时更新