mcpField
R
rc-understanding-revenuecat

rc-understanding-revenuecat

github.com/revenuecat开发76634 次安装1 天前更新
代码仓库

关于 rc-understanding-revenuecat

面向初学者的 RevenueCat 概念入门技能,帮助 Android 开发者理解产品、套餐、Offering 与权益,并选择后续开发技能。它梳理 SDK、后端和 Google Play 之间的职责分工。

主要功能

  1. 01解释 Product、Package、Offering 与 Entitlement
  2. 02说明 SDK、后端和 Google Play 的调用路径
  3. 03介绍 Offerings 与 CustomerInfo 的用途
  4. 04梳理后续技能的选择方向

适用场景

  1. 01从原生 Play Billing 迁移前了解 RevenueCat
  2. 02确定仪表板对象与应用概念的对应关系
  3. 03判断应查询 Offerings 还是 CustomerInfo
  4. 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 替代方案所在位置
客户端上的 BillingClientPurchases SDK你的 Android 应用
服务器上的 Google Play Developer APIRevenueCat 后端由 RevenueCat 管理
通过 Cloud Pub/Sub 发送的 Real Time Developer NotificationsRevenueCat 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 会关联到 EntitlementRevenueCat 控制面板

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 阶段:合理性检查

离开此技能并路由到下游技能之前,请明确确认:

  1. 你能指出用户的问题涉及三个原始支柱中的哪一个(客户端计费、服务器 Play Developer API、RTDN)。
  2. 你能说明用户询问的是 Product、Package、Offering 还是 Entitlement。这些概念不能互换。
  3. 你知道用户需要的是 Offerings(要销售的内容)还是 CustomerInfo(用户已拥有的内容)。大多数混淆都源于混淆这两者。
  4. 你已准确选定一个要调用的下游技能,或者提出了一个具体的澄清问题。

如果以上四项中有任何一项不满足,请在继续前重读第 1 阶段或本章。

参考资料

评论

支持 Markdown