关于 revenuecat
revenuecat 是帮助开发者在应用中实现订阅和应用内购买的技能,面向 iOS、Android、Flutter 和 React Native 等项目。内容覆盖 SDK 配置、购买流程、权益检查及服务端 API 使用。
主要功能
- 01多平台 SDK 初始化
- 02订阅及应用内购买流程
- 03权益与客户信息检查
- 04Offerings 与产品获取
- 05恢复购买及 REST API
适用场景
- 01在移动应用中接入订阅
- 02依据权益控制高级内容访问
- 03展示远程配置的商品选项
- 04处理恢复购买与服务端校验
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ rawveg/ skillsforge-marketplace --skill revenuecat安装后在 Claude Code 中输入/revenuecat确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
plugin.jsonreferences/index.mdother.md详细介绍
RevenueCat 技能
为在 iOS、Android、Flutter、React Native 和 Web 平台上使用 RevenueCat 实现应用内订阅和购买提供专业指导。
何时使用此技能
在以下情况应触发此技能:
- SDK 设置:在 iOS、Android、Flutter 或 React Native 应用中初始化 RevenueCat SDK
- 订阅实现:添加订阅或应用内购买功能
- 权益检查:验证用户是否有权访问高级功能或内容
- 购买流程:实现购买按钮、处理交易或完成购买
- 恢复购买:为更换设备的用户添加恢复功能
- 产品套餐/产品:获取并展示订阅选项或产品目录
- 付费墙设计:构建或配置付费墙和购买页面
- 客户信息:获取订阅状态或客户数据
- 购买问题调试:排查订阅问题或交易失败
- REST API 集成:在服务端验证订阅或处理 Webhook
快速参考
SDK 配置
Swift(iOS)
import RevenueCat
Purchases.logLevel = .debug
Purchases.configure(withAPIKey: "your_public_api_key", appUserID: "user_123")
Kotlin(Android)
Purchases.logLevel = LogLevel.DEBUG
Purchases.configure(PurchasesConfiguration.Builder(this, "your_public_api_key").build())
Flutter
await Purchases.setLogLevel(LogLevel.debug);
PurchasesConfiguration configuration = PurchasesConfiguration("your_public_api_key");
await Purchases.configure(configuration);
React Native
Purchases.setLogLevel(Purchases.LOG_LEVEL.DEBUG);
Purchases.configure({ apiKey: "your_public_api_key" });
检查权益
Swift
let customerInfo = try await Purchases.shared.customerInfo()
if customerInfo.entitlements["pro"]?.isActive == true {
// User has premium access
}
Kotlin
Purchases.sharedInstance.getCustomerInfoWith(
onSuccess = { customerInfo ->
if (customerInfo.entitlements["pro"]?.isActive == true) {
// User has premium access
}
}
)
React Native
const customerInfo = await Purchases.getCustomerInfo();
if (customerInfo.entitlements.active["pro"] !== undefined) {
// User has premium access
}
获取产品套餐
Swift
Purchases.shared.getOfferings { (offerings, error) in
if let packages = offerings?.current?.availablePackages {
self.display(packages)
}
}
Kotlin
Purchases.sharedInstance.getOfferingsWith({ error -> }) { offerings ->
offerings.current?.availablePackages?.let { packages ->
// Display packages
}
}
进行购买
Swift
Purchases.shared.purchase(package: package) { (transaction, customerInfo, error, userCancelled) in
if customerInfo.entitlements["pro"]?.isActive == true {
// Unlock premium content
}
}
Kotlin
Purchases.sharedInstance.purchase(
packageToPurchase = aPackage,
onError = { error, userCancelled -> },
onSuccess = { storeTransaction, customerInfo ->
if (customerInfo.entitlements["pro"]?.isActive == true) {
// Unlock premium content
}
}
)
恢复购买
Swift
Purchases.shared.restorePurchases { customerInfo, error in
// Check customerInfo to see if entitlement is now active
}
Kotlin
Purchases.sharedInstance.restorePurchases(
onError = { error -> },
onSuccess = { customerInfo ->
// Check customerInfo to see if entitlement is now active
}
)
REST API - 获取客户信息
curl --request GET \
--url https://api.revenuecat.com/v1/subscribers/app_user_id \
--header 'Authorization: Bearer PUBLIC_API_KEY'
核心概念
权益
用户有权使用的一系列访问权限、功能或内容。大多数应用使用单个权益(例如 “pro”)。在 RevenueCat 控制面板中创建,并关联到产品。购买产品后,其关联权益即会生效。
产品套餐
提供给用户的一组产品。在控制面板中远程配置,因此无需更新应用即可更改可用产品。通过 offerings.current 访问默认产品套餐。
套餐
产品套餐中的产品容器。包含 .monthly、.annual、.lifetime 等便捷访问器。每个套餐都包含一个提供定价详情的 storeProduct。
客户信息
包含用户所有订阅和购买数据的核心对象。可通过 getCustomerInfo() 获取,或在购买后由其返回。包含用于访问权限检查的 entitlements 字典。
应用用户 ID
每位用户的唯一标识符。可在配置时提供,也可自动生成为匿名 ID。用于跨设备同步购买记录。
参考文件
此技能在 references/ 中包含完整文档:
- other.md - RevenueCat 通用文档和概览
如需了解快速参考之外的详细实现模式,请参阅官方文档:https://www.revenuecat.com/docs/
使用此技能
初学者
- 先在应用的初始化代码中配置 SDK
- 在 RevenueCat 控制面板中创建权益和产品套餐
- 在展示高级内容前实现简单的权益检查
- 使用
purchase(package:)添加购买按钮 - 添加“恢复购买”按钮,以符合 App Store 要求
中级用户
- 获取产品套餐并展示其中的套餐,以实现动态付费墙
- 处理多个权益,以实现分级访问权限
- 设置客户信息监听器,以实时接收订阅更新
- 使用 REST API 在服务端验证订阅
高级用户
- 配置 Webhook 以在服务端处理事件
- 通过不同的产品套餐实现 A/B 测试
- 设置与分析和归因平台的集成
- 处理宽限期和账单重试等边界情况
常见模式
付费墙显示逻辑
// Show paywall only if user doesn't have active subscription
if customerInfo.entitlements["pro"]?.isActive != true {
showPaywall()
}
有条件的产品套餐
if user.isPaidDownload {
packages = offerings?.offering(identifier: "paid_download_offer")?.availablePackages
} else {
packages = offerings?.current?.availablePackages
}
重要说明
- 始终在应用生命周期的早期初始化 SDK
- 开发期间使用调试日志(
Purchases.logLevel = .debug) - SDK 会自动完成/确认交易
- 仅在用户交互时调用
restorePurchases(例如点击按钮) - 使用 Project Settings 中的公开 API 密钥;切勿暴露密钥
- Test Store 支持开发测试,无需实际扣费
资源
官方文档
- 入门指南:https://www.revenuecat.com/docs/getting-started/quickstart
- SDK 参考:https://www.revenuecat.com/docs/
- REST API:https://docs.revenuecat.com/reference
references/
从官方来源整理的文档,包含详细说明和代码示例。
scripts/
在此处添加常见自动化任务的辅助脚本。
assets/
在此处添加模板、样板代码或示例项目。