mcpField
R
rc-price-changes

rc-price-changes

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

关于 rc-price-changes

面向 Android 订阅应用开发者的 RevenueCat 技能,说明如何调整现有订阅价格并处理用户同意状态。涵盖 Google Play 与 RevenueCat 的流程,以及可选的应用内通知。

主要功能

  1. 01区分选择退出与选择加入价格变更
  2. 02说明 RevenueCat 处理 RTDN 的方式
  3. 03通过 CustomerInfo 读取同意结果
  4. 04使用 webhook 处理取消事件

适用场景

  1. 01规划 Android 订阅的价格调整
  2. 02检查大型涨价后的用户同意状态
  3. 03在服务器处理拒绝涨价后的取消
  4. 04向受影响订阅者展示可选通知

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/revenuecat/ai-toolkit --skill rc-price-changes

安装后在 Claude Code 中输入/rc-price-changes确认已加载。

详细介绍

价格变更

当你为 Android 上现有的订阅产品推出新价格,并希望 RevenueCat 为你管理用户群组和同意流程时,请使用此技能。

阶段 1:了解

Google Play 支持对活跃订阅者进行两种价格变更:

  • 选择退出变更(通常是降价,以及在 Google 选择退出门槛范围内的涨价)。新价格会在下次续订时自动生效。无需用户采取任何操作。
  • 选择加入变更(幅度较大的涨价)。Google 会显示自己的应用内同意对话框。如果用户同意,他们将继续按新价格订阅。如果用户拒绝,订阅将在周期结束时取消。

RevenueCat 会在后端处理 SUBSCRIPTION_PRICE_CHANGE_UPDATED 和相关 RTDN,并在订阅者所属用户群组或同意状态发生变化时更新 CustomerInfo。你的应用仍以一贯的方式读取权益。

对于大多数价格变更场景,你无需在应用或后端实现任何内容。

阶段 2:规划

在执行任何操作之前,先确定适用哪种路径。

问题选择退出选择加入
常见触发条件降价,或在 Google 门槛范围内的小幅涨价超过 Google 门槛的较大幅度涨价
用户同意不需要需要,由 Google Play UI 提示
用户拒绝时不适用订阅将在周期结束时取消,并触发 CANCELLATION webhook
新价格生效时间下次续订时自动生效用户在 Play 对话框中同意后生效
RevenueCat 会处理的 RTDNSUBSCRIPTION_PRICE_CHANGE_UPDATEDSUBSCRIPTION_PRICE_CHANGE_UPDATED,如果用户拒绝,之后还会收到 SUBSCRIPTION_CANCELED
应用代码变更不需要不需要
付费墙价格来源pkg.product.price.formatted(仅限新购买)pkg.product.price.formatted(仅限新购买)

执行前需要回答的问题:

  • 这次变更是降价、小幅涨价还是较大幅度涨价?这决定采用选择退出还是选择加入。
  • 你是否希望在变更生效前通过应用通知现有订阅者?这是可选项,可通过 webhook 或 Targeting 规则实现,并非必需。
  • 当前有哪些旧用户群组?在 Google 迁移他们之前,现有订阅者会继续按旧价格付费。这属于 Google Play 范畴,不会显示在 SDK 中。

阶段 3:执行

大部分工作都在 Play Console 和 RevenueCat 控制面板中完成。你的应用保持不变。

1. 在 Play Console 中更新价格

在 Google Play Console 中打开订阅,选择基础方案并编辑价格。Google 会根据变更幅度和所在地区,提示你选择如何处理现有订阅者(选择退出还是选择加入)。

2. 等待 RevenueCat 获取变更

RevenueCat 会自动处理来自 Google 的 RTDN。你无需在 RevenueCat 控制面板中切换任何设置来应用价格变更。Google 推送变更后,请确认 RevenueCat 控制面板中的产品显示了更新后的价格。

3. 在客户端刷新 offerings(可选)

如果你希望付费墙立即向新购买者显示新价格,请在 Play Console 推送变更后刷新 offerings。SDK 调用不变:

val offerings = Purchases.sharedInstance.awaitOfferings()
val pkg = offerings.current?.availablePackages?.firstOrNull() ?: return
val displayPrice = pkg.product.price.formatted

旧用户群组中的订阅者会继续按旧价格付费,直到 Google 迁移他们。对于新购买,pkg.product.price.formatted 始终准确。

4. 在同意结果确定后检查 CustomerInfo

对于选择加入的涨价,RevenueCat 会在同意结果确定后更新 CustomerInfo。按常规方式读取权益。

val info = Purchases.sharedInstance.awaitCustomerInfo()
val isPro = info.entitlements["pro"]?.isActive == true

不要构建同意对话框。Google Play 会显示该对话框。

5. 如有需要,通过 webhook 处理用户拒绝

如果用户拒绝选择加入涨价,订阅将在周期结束时取消。RevenueCat 会触发 CANCELLATION webhook 事件。在服务器端按处理其他取消事件的方式处理即可。

6. 可选:通知受影响的用户

如果你想在 Google 的对话框出现前提醒订阅用户即将涨价,可以通过 RevenueCat webhook 事件在应用内显示横幅,或使用 Targeting 规则向受影响的用户群展示特定的 Offering。这是增强功能,不属于价格变更约定的一部分。

参考资料

评论

支持 Markdown