关于 rc-understanding-revenuecat
面向初学者的 RevenueCat 概念入门技能,帮助 Android 开发者理解产品、套餐、Offering 与权益,并选择后续开发技能。它梳理 SDK、后端和 Google Play 之间的职责分工。
主要功能
- 01解释 Product、Package、Offering 与 Entitlement
- 02说明 SDK、后端和 Google Play 的调用路径
- 03介绍 Offerings 与 CustomerInfo 的用途
- 04梳理后续技能的选择方向
适用场景
- 01从原生 Play Billing 迁移前了解 RevenueCat
- 02确定仪表板对象与应用概念的对应关系
- 03判断应查询 Offerings 还是 CustomerInfo
- 04根据开发目标选择后续技能
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ revenuecat/ ai-toolkit --skill rc-understanding-revenuecat安装后在 Claude Code 中输入/rc-understanding-revenuecat确认已加载。
详细介绍
理解 RevenueCat
阶段 0:意图
在编写任何 RevenueCat 代码之前,请先使用此技能。它会提供必要的词汇和思维模型,让后续技能(设置、配置、购买流程、权益)更容易理解。
如果符合以下任一情况,请从这里开始:
- 你刚接触 RevenueCat,或正从原生 Play Billing 集成迁移而来。
- 你不确定某个概念对应哪个控制面板对象。
- 你需要根据特定用户目标,判断要调用哪个后续技能。
如果你已经了解 Offering、Package、Product 和 Entitlement 之间的区别,并且知道 Purchases.sharedInstance 是唯一入口,则可以跳过此技能。
阶段 1:了解概况
原生 Android 应用内购买需要三个独立的系统。RevenueCat 将这三者整合到一个 SDK 和一个控制面板中。
| 原生 Google Play 技术栈 | RevenueCat 替代方案 | 所在位置 |
|---|---|---|
客户端上的 BillingClient | Purchases SDK | 你的 Android 应用 |
| 服务器上的 Google Play Developer API | RevenueCat 后端 | 由 RevenueCat 管理 |
| 通过 Cloud Pub/Sub 发送的 Real Time Developer Notifications | RevenueCat Webhook | 由 RevenueCat 管理,并发送到你的服务器 |
调用路径如下:
Your App
-> Purchases SDK
-> RevenueCat Backend
-> Google Play Developer API
-> Google Play
你的应用与 Purchases SDK 通信。SDK 与 Google Play 通信以显示购买界面,并与 RevenueCat 后端通信以进行验证和权益存储。你的服务器端代码与 RevenueCat 后端通信,而不是直接与 Google Play 通信。
这会带来一个结果:RevenueCat 位于购买验证路径中。用户完成购买后,SDK 会先将令牌发送给 RevenueCat,然后你的应用才会收到确认。你需要多进行一次网络往返,但无需自行构建服务器端验证。
必须了解的四个概念
| 概念 | 含义 | 定义位置 |
|---|---|---|
| Product | 订阅、基础方案或一次性购买 | Google Play Console |
| Package | 带有类型标签(Monthly、Annual、Lifetime、自定义)的 Product。它是付费墙展示的单位 | RevenueCat 控制面板 |
| Offering | 一组 Package。其中一个 Offering 会被标记为 Current,并由 offerings.current 返回 | RevenueCat 控制面板 |
| Entitlement | 应用检查的逻辑访问级别,例如 "pro_access"。Product 会关联到 Entitlement | RevenueCat 控制面板 |
CustomerInfo 是 RevenueCat 计算并缓存的运行时快照,包含用户的购买历史和有效 Entitlement。
大多数情况下只需要进行的两次读取
val offerings = Purchases.sharedInstance.awaitOfferings()
val monthly = offerings.current?.monthly
val customerInfo = Purchases.sharedInstance.awaitCustomerInfo()
val hasPro = customerInfo.entitlements["pro_access"]?.isActive == true
isActive 已在服务器端处理了 Play 订阅的七种状态(ACTIVE、IN_GRACE_PERIOD、ON_HOLD、PAUSED、CANCELED、EXPIRED、PENDING)。你无需在客户端重新实现这套逻辑。
单例
Purchases.sharedInstance 是唯一入口。你只需在应用启动时配置一次:
Purchases.configure(
PurchasesConfiguration.Builder(context, "your_api_key")
.appUserID("optional_user_id")
.build()
)
与 BillingClient 不同,这个单例无需你管理连接状态。它会自动重新连接,并为你排队处理调用。
RevenueCat 不会替代的内容
- Google Play Console。你仍需在其中创建产品、基础方案和优惠。
- 应用 UI。你仍需构建付费墙并显示价格。RevenueCat 会提供数据。
- 你的身份验证系统。你需要自行提供用户 ID 并传递给 SDK。
权衡
你可以免去验证方面的复杂工作,但需要接受一项依赖。如果 RevenueCat 后端发生故障,购买验证就会受到影响。可以采用两种缓解措施,但它们各不相同:
| 功能 | 作用 | 生效时机 |
|---|---|---|
CustomerInfo 磁盘缓存 | 在检查权益时返回最近一次已知的服务器状态 | 自动启用,始终生效 |
| Offline Entitlements | 根据本地 Play Store 购买记录在设备上计算权益 | 仅在你明确配置后生效 |
两者都无法完全替代可访问的后端。请在适用的情况下同时使用。
第 2 阶段:将用户目标映射到下游技能
了解上述模型后,根据用户实际想做的事情选择下一项技能。
| 用户目标 | 下一项技能 |
|---|---|
| 安装 SDK、配置 Gradle、添加权限、配置 Play Console 产品 | rc-setup |
调用 Purchases.configure、传入 appUserID、设置日志级别、附加属性 | rc-configuring-the-sdk |
获取 Offerings、展示付费墙、调用 purchase、处理结果 | rc-purchase-flow |
检查 customerInfo.entitlements["..."]?.isActive、限制功能、监听更新 | revenuecat/entitlements-and-customerinfo |
| 识别用户、设置别名或注销 | revenuecat/user-identity |
| 处理恢复购买、跨设备使用、促销码 | revenuecat/restore-and-recovery |
| 接收来自 RevenueCat 的服务器端事件 | rc-webhooks |
| 在生产环境中调试特定购买、收据或权益 | revenuecat/debugging |
如果用户目标与任何一行都不匹配,请留在此处,继续澄清意图后再进行路由。
第 3 阶段:合理性检查
离开此技能并路由到下游技能之前,请明确确认:
- 你能指出用户的问题涉及三个原始支柱中的哪一个(客户端计费、服务器 Play Developer API、RTDN)。
- 你能说明用户询问的是 Product、Package、Offering 还是 Entitlement。这些概念不能互换。
- 你知道用户需要的是
Offerings(要销售的内容)还是CustomerInfo(用户已拥有的内容)。大多数混淆都源于混淆这两者。 - 你已准确选定一个要调用的下游技能,或者提出了一个具体的澄清问题。
如果以上四项中有任何一项不满足,请在继续前重读第 1 阶段或本章。