用途
rc-price-changes 用于在 Android 上为现有订阅产品推出新价格时,让 RevenueCat 代为管理用户分组与同意流程。适用于需要调整订阅价格、又希望减少客户端改动和人工处理同意逻辑的场景。
主要能力
Google Play 对活跃订阅者支持两类价格变更:
- Opt out 变更:通常是降价,或涨幅在 Google 的 opt out 阈值内。新价格在下次续订时自动生效,无需用户操作。
- Opt in 变更:较大幅度涨价。Google 会显示自己的应用内同意对话框。用户同意则继续按新价订阅;拒绝则订阅在当期结束时取消。
RevenueCat 在后端处理 SUBSCRIPTION_PRICE_CHANGE_UPDATED 及相关 RTDN,并在订阅者的分组或同意状态变化时更新 CustomerInfo。应用读取权益的方式保持不变。对于大多数价格变更场景,应用或后端无需实现任何内容。
使用方式
第一阶段:理解
先判断适用哪条路径:
| 问题 | Opt out | Opt in |
|---|---|---|
| 典型触发 | 降价,或 Google 阈值内的小幅涨价 | 超过 Google 阈值的大幅涨价 |
| 用户同意 | 不需要 | 需要,由 Google Play UI 提示 |
| 用户拒绝时 | 不适用 | 订阅在当期结束时取消,触发 CANCELLATION webhook |
| 新价格生效 | 下次续订时自动生效 | 用户在 Play 对话框同意后 |
| RevenueCat 消费的 RTDN | SUBSCRIPTION_PRICE_CHANGE_UPDATED | SUBSCRIPTION_PRICE_CHANGE_UPDATED,若拒绝则随后 SUBSCRIPTION_CANCELED |
| 应用代码改动 | 无需 | 无需 |
| 付费墙价格来源 | pkg.product.price.formatted(仅新购买) | pkg.product.price.formatted(仅新购买) |
执行前需回答的问题:
- 变更是降价、小幅涨价还是大幅涨价?这决定 opt out 还是 opt in。
- 是否希望在变更生效前于应用内通知现有订阅者?这是可选项,由 webhook 或 Targeting 规则驱动,并非必需。
- 当前存在哪些旧分组?现有订阅者会继续按旧价付费,直到 Google 迁移他们。这属于 Google Play 的关注点,在 SDK 中不可见。
第二阶段:执行
大部分工作在 Play Console 和 RevenueCat 后台完成,应用保持不变。
-
在 Play Console 更新价格:打开订阅,选择基础方案,编辑价格。Google 会根据变更幅度和地区提示你选择如何对待现有订阅者(opt out 或 opt in)。
-
让 RevenueCat 接收变更:RevenueCat 自动处理来自 Google 的 RTDN。价格变更本身无需在 RevenueCat 后台切换任何开关。在 Google 传播后,确认更新后的产品价格出现在 RevenueCat 后台的产品上。
-
在客户端刷新 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 对新购买始终正确。
- 在同意结果确定时观察 CustomerInfo:对于 opt in 涨价,RevenueCat 在同意结果已知时更新 CustomerInfo。按常规方式读取权益:
val info = Purchases.sharedInstance.awaitCustomerInfo()
val isPro = info.entitlements["pro"]?.isActive == true
不要自行构建同意对话框,Google Play 会显示它。
-
如需处理拒绝,通过 webhook:若用户拒绝 opt in 涨价,订阅在当期结束时取消。RevenueCat 触发 CANCELLATION webhook 事件。在服务端按处理其他取消的方式处理它。
-
可选:通知受影响用户:若希望在 Google 对话框出现前提醒订阅者即将涨价,可由 RevenueCat webhook 事件驱动应用内横幅,或用 Targeting 规则向受影响分组展示特定 Offering。这是增强项,不属于价格变更契约的一部分。
适用场景
- 在 Android 上调整现有订阅产品价格,并希望由 RevenueCat 处理分组与同意流程。
- 需要区分 opt out 与 opt in 两类变更并了解各自后果。
- 希望在不改动应用代码的前提下完成价格变更。
限制
- 主要面向 Android 平台与 Google Play。
- 旧分组订阅者继续按旧价付费,直到 Google 迁移,这属于 Google Play 的关注点,在 SDK 中不可见。
- 同意对话框由 Google Play 显示,不应自行构建。
- 应用内提前通知属于可选增强,不属于价格变更契约的一部分。
- 资料未提供收费、价格、平台支持范围等更多信息。