本插件已转移到RevenueCat官方仓库。请参阅 官方文档 有关更多信息。
如果您更喜欢一个更简单的本地API而不使用RevenueCat, @capgo/native-purchases 实现了直接与StoreKit和Google Play Billing的内购和订阅。
Capacitor内购是Capacitor框架的插件,允许在iOS和Android上进行内购。它提供了一个简单和一致的API,使开发者能够轻松地在移动应用中实现内购和订阅。
Capacitor内购插件的关键功能之一是它与RevenueCat集成,RevenueCat是一个提供内购和订阅工具的平台。RevenueCat简化了实现内购和订阅的过程,提供了一个简单和一致的API,并自动化了如验收凭证和用户管理等任务。
使用RevenueCat,开发者可以轻松地管理订阅,跟踪收入,并执行其他相关任务。RevenueCat提供的功能包括:
- 自动验收凭证
- 用户管理
- 自定义定价模型支持
- Detailed analytics -可扩展性
通过使用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和设置应用程序时使用公司账户。您可以邀请您的团队成员作为
协作者 加入您的项目,但 只有项目负责人才能管理账单 . 项目协作者无法管理账单细节。2. 项目和应用程序配置
在这里
▶️ 创建一个项目
前往 RevenueCat 控制台并 添加一个新项目 从顶部导航菜单下拉菜单中 项目.

创建新项目弹窗
▶️ 添加一个应用/平台
从 项目设置 > 应用 在项目控制台左侧菜单中选择将要添加的应用平台。

项目仪表板用于选择应用程序平台
字段 应用名称 需要添加应用程序到RevenueCat中。其他配置字段可以稍后添加。为了进行测试和生产购买,需要配置包ID(iOS)/包名(Android)以及共享密钥(iOS)/服务凭证(Android)。

Apple App Store应用程序的应用配置页面
📘
💡这里的提示!
注册应用程序后,RevenueCat建议设置 平台服务器通知。这些通知不是必需的,但会加快 webhooks 和集成交付时间,减少更新订阅者的延迟时间。
📘
开发环境与生产环境
RevenueCat自身并不支持开发环境和生产环境的分离。相反,针对用户的底层交易是通过sandbox和生产环境来区分的。
任何RevenueCat应用都可以从商店中进行sandbox和生产环境的购买。如果您有开发环境和生产环境的分离应用,您可以在RevenueCat中创建多个项目来模拟您的设置。
此外,用户也不会根据环境进行分离。同一用户可以同时拥有sandbox环境和生产环境的活跃购买。
▶️ 服务凭证
需要为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使用Entitlements系统来控制对高级功能的访问,并使用Offerings来管理您向客户提供的产品集。
Entitlements是客户在购买特定产品后获得的访问级别。 Offerings是您组织在付费墙上展示的应用内产品的简单方式,并且可以远程配置它们。RevenueCat 建议 使用这些功能来简化您的code并使您能够在不发布应用程序更新的情况下更改产品。
查看 配置产品 设置您的产品,然后将它们组织到Offerings或Entitlements中。

4. 使用RevenueCat的购买SDK
RevenueCatSDK可以无缝地在各个平台上实现购买和订阅,同时与RevenueCat服务器同步令牌。
如果您遇到SDK问题,请参阅 Troubleshooting the SDKs 为了获得更多指导。
📘
仅使用您的公共SDK密钥来配置购买。
您可以从SDK密钥中获取您的公共SDK密钥。 API密钥 在__CAPGO_KEEP_0__中 项目设置 在控制台中。
您应该只在应用启动时配置一次__CAPGO_KEEP_0__的共享实例。随后,同一实例在您的应用中通过访问__CAPGO_KEEP_0__中的实例而共享。 请参阅RevenueCat的指南 __CAPGO_KEEP_0__ .shared SDK
__CAPGO_KEEP_0__ 配置SDK 获取更多信息和最佳实践。
确保您配置 购买 仅使用您的公共SDK密钥。您可以在RevenueCat中阅读有关不同API密钥的更多信息 身份验证指南.
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.
📘
配置__CAPGO_KEEP_0__
If you have a user authentication system in your app, you can provide a user identifier at the time of configuration or at a later date with a call to
.logIn(). To learn more, check out RevenueCat guide on Identifying Users.
The SDK will automatically fetch the and retrieve the product information from Apple, Google, or Amazon. Thus, available products will already be loaded when customers launch your purchase screen. Below is an example of fetching Offerings. You can utilize Offerings to organize your paywall screen. See RevenueCat guide on
for more information and best practices. ▶️ Fetch and Display Available Products Configuring Purchases with User IDs
If you have a user authentication system in your app, you can provide a user identifier at the time of configuration or at a later date with a call to
📘
Identifying Users
Displaying Products
.logIn(). 为了了解更多信息,请参阅RevenueCat关于 识别用户.
The SDK 将自动从 Apple、Google 或 Amazon 获取配置的 产品 并从 Apple、Google 或 Amazon 获取产品信息。因此,当客户打开您的购买屏幕时,已加载的产品将可用。
以下是获取 产品 的示例。您可以使用
const { offerings } = await CapacitorPurchases.getOfferings()
if (offerings.current !== null) {
// Display current offering with offerings.current
}
产品 来组织您的付费墙屏幕。请参阅RevenueCat关于, 显示产品的指南以获取更多信息和最佳实践。 packages 因为某些商店的配置问题,
在 App Store Connect 中,最常见的原因是 '付费应用程序协议' 未更新或产品未达到 '准备提交' 状态。在 GooglePlay 中,这通常发生在应用程序未在关闭的测试轨道上发布且未添加有效测试用户时。
请参阅 RevenueCat 帮助中心 购买.
__CAPGO_KEEP_0__ 包含一个简单的方法来促进购买。__CAPGO_KEEP_0__
The SDK includes a simple method for facilitating purchases. The purchase:package 以下示例展示了如何购买一个包并确认它解锁了 'your_entitlement_id' 内容。有关更多详细信息,请参阅 RevenueCat 的
The code sample below shows the process of purchasing a package and confirming it unlocks the “your_entitlement_id” content. More details about the purchase:package 购买 检查订阅状态.
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
}
__CAPGO_KEEP_0__
您可以在需要获取最新状态时使用此方法,并且在应用程序整个生命周期中安全地重复调用它。 购买 自动缓存最新的数据 CustomerInfo 在更新时缓存最新的数据 — 因此,在大多数情况下,这个方法从缓存中获取并运行非常快。
在决定显示用户界面时以及用户执行需要特定权利级别的操作时,通常会调用此方法。
📘
💡 这是一个小提示!
您可以访问关于订阅的更多信息,除了是否激活以外。查看RevenueCat关于 订阅状态 的指南,了解订阅是否设置为续费,如果用户的信用卡有问题等。
RevenueCat使您的用户能够恢复他们的内购,重新激活他们之前从 同一商店账户 (Apple、Google或Amazon账户)购买的内容。我们建议所有应用程序都有一个让用户触发恢复方法的方式。请注意,Apple要求在用户无法访问他们的购买时(例如卸载/安装应用程序,丢失账户信息等)提供恢复机制。
const res = await CapacitorPurchases.restoreTransactions()
const purchaserInfo = res.purchaserInfo
const ids: string[] = [] // extract active subscriptions ids
purchaserInfo.activeSubscriptions.forEach((id) => {
ids.push(id)
})
如果两个不同的 App用户ID 从同一个基础存储帐户(Apple、Google或Amazon帐户)恢复两次不同 RevenueCat可能会尝试在两个App用户ID之间创建一个别名,并将它们视为同一用户。请参阅 恢复购买
Since the SDK works seamlessly on any platform, changes to a user’s purchase info may come from a variety of sources. You can respond to any changes in a customer’s CustomerInfo 由于__CAPGO_KEEP_0__在任何平台上都能完美工作,用户购买信息的更改可能来自各种来源。您可以通过遵循可选委托方法来响应客户的任何更改 purchases:receivedUpdated:.
此方法将在SDK接收来自 CustomerInfo 、或 getCustomerInfo(), purchase(package:), purchase(product:)客户信息更新 restorePurchases().
不 App用户ID 从RevenueCat后端推送到您的应用程序,更新只能从RevenueCat的出站网络请求中发生,如上所述。
根据您的应用程序,可能只需忽略委托并简单地在下一次启动应用程序或SDK方法的完成块中处理客户信息的更改。
CapacitorPurchases.addListener('purchasesUpdate', (data) => {
console.log('purchasesUpdate', data)
})
👍
您做到了!
您现在已经实现了一个功能齐全的订阅购买系统,没有花费一个月的时间编写服务器code。恭喜!
示例应用程序
要下载有关如何集成SDK的完整示例,请访问RevenueCat示例应用程序资源。
我将很快发布使用Capacitor和Vue.js的示例应用程序。
如果您需要深入使用Capacitor,SDK请检查文档 这里.
下一步
\
- 如果您还没有,请确保您的产品已正确配置,通过查看RevenueCat 关于权益的指南.
- 如果您想使用自己的用户标识符,请阅读关于 设置应用程序用户ID .
- 如果您从其他系统转移到RevenueCat,请参阅RevenueCat关于 迁移您的现有订阅.
- 一旦您准备好测试您的集成,您就可以遵循RevenueCat关于 测试和调试.
- 如果您符合App Store Small Business Program的资格,请参阅RevenueCat关于 如何申请并通知RevenueCat
如果您需要在应用程序中实时更新
加入我们这里 👇
注册这里获取您的帐户
Keep going from in app purchases for capacitor
如果您正在使用 in app purchases for capacitor 连接它与 Capgo 价格 for the product workflow in Capgo Pricing, __CAPGO_KEEP_0__ 价格 支付系统 @capgo/native-purchases @capgo/native-purchases @__CAPGO_KEEP_0__/native-purchases 为《Getting Started》中的实现细节,和 Revenue Playbook 为《Revenue Playbook》中的实现细节,