rc-price-changes
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChinesePrice Changes
价格变更
Use this skill when you roll out a new price for an existing subscription product on Android and want RevenueCat to manage the cohort and consent plumbing for you.
当你在Android平台为现有订阅产品推出新价格,并希望RevenueCat为你管理用户群组和同意相关流程时,可以使用本Skill。
Phase 1: Understand
阶段1:了解背景
Google Play supports two kinds of price changes for active subscribers:
- Opt out changes (typically decreases, and increases within Google's opt out threshold). The new price applies automatically at the next renewal. No user action required.
- Opt in changes (larger increases). Google shows its own in app consent dialog. If the user consents, they continue at the new price. If they decline, the subscription cancels at period end.
RevenueCat processes and related RTDNs on its backend and updates when a subscriber's cohort or consent state changes. Your app reads entitlements the same way it always does.
SUBSCRIPTION_PRICE_CHANGE_UPDATEDCustomerInfoFor most price change scenarios, there is nothing to implement in your app or backend.
Google Play支持针对活跃订阅用户的两种价格变更类型:
- 可选择退出的变更(通常是降价,以及在Google可选择退出阈值内的涨价)。新价格会在下次续订时自动生效,无需用户操作。
- 需要选择加入的变更(幅度较大的涨价)。Google会显示其内置的应用内同意对话框。如果用户同意,他们将按新价格继续订阅;如果拒绝,订阅会在当前周期结束时取消。
RevenueCat会在其后端处理及相关RTDN,并在订阅用户的群组或同意状态变更时更新。你的应用读取权益的方式保持不变。
SUBSCRIPTION_PRICE_CHANGE_UPDATEDCustomerInfo对于大多数价格变更场景,你的应用或后端无需进行任何实现。
Phase 2: Plan
阶段2:规划
Decide which path applies before you touch anything.
| Question | Opt out | Opt in |
|---|---|---|
| Typical trigger | Decrease, or small increase within Google's threshold | Larger increase above Google's threshold |
| User consent | Not required | Required, prompted by Google Play UI |
| If user declines | N/A | Subscription cancels at period end, |
| New price applies | Automatically at next renewal | After user consents in Play's dialog |
| RTDN RevenueCat consumes | | |
| App code change | None required | None required |
| Paywall price source | | |
Questions to answer before executing:
- Is the change a decrease, a small increase, or a larger increase? That determines opt out vs opt in.
- Do you want to notify existing subscribers in app before the change takes effect? That is optional, driven by a webhook or a Targeting rule, not a requirement.
- Which legacy cohorts exist today? Existing subscribers keep paying their old price until Google migrates them. This is a Google Play concern, not visible in the SDK.
在进行任何操作前,先确定适用哪种方案。
| 问题 | 可选择退出 | 需要选择加入 |
|---|---|---|
| 典型触发场景 | 降价,或在Google阈值内的小幅涨价 | 超出Google阈值的大幅涨价 |
| 用户同意 | 无需 | 需要,由Google Play UI提示 |
| 用户拒绝时的情况 | 不适用 | 订阅在周期结束时取消,触发 |
| 新价格生效时间 | 下次续订时自动生效 | 用户在Play对话框中同意后 |
| RevenueCat处理的RTDN | | |
| 应用代码变更 | 无需 | 无需 |
| 付费墙价格来源 | | |
执行前需要明确的问题:
- 变更是降价、小幅涨价还是大幅涨价?这将决定是采用可选择退出还是需要选择加入的方案。
- 是否要在变更生效前通过应用内通知现有订阅用户?这是可选操作,可通过webhook或定向规则实现,并非强制要求。
- 当前存在哪些历史用户群组?现有订阅用户会继续支付旧价格,直到Google完成迁移。这是Google Play的相关事项,在SDK中不可见。
Phase 3: Execute
阶段3:执行
Most of the work is in the Play Console and the RevenueCat dashboard. Your app stays the same.
大部分工作在Play Console和RevenueCat控制台中完成,你的应用无需修改。
1. Update the price in Play Console
1. 在Play Console中更新价格
In Google Play Console, open the subscription, select the base plan, and edit the price. Google will prompt you to choose how existing subscribers are treated (opt out vs opt in) based on the magnitude of the change and your region.
在Google Play Console中,打开订阅产品,选择基础方案,然后编辑价格。Google会根据变更幅度和地区,提示你选择如何处理现有订阅用户(可选择退出或需要选择加入)。
2. Let RevenueCat pick up the change
2. 让RevenueCat同步变更
RevenueCat processes the RTDNs from Google automatically. You do not need to toggle anything in the RevenueCat dashboard for the price change itself. Confirm the updated product price appears on the product in the RevenueCat dashboard after Google propagates it.
RevenueCat会自动处理来自Google的RTDN。你无需在RevenueCat控制台中针对价格变更进行任何切换操作。在Google完成变更传播后,确认更新后的产品价格已显示在RevenueCat控制台的产品页面中。
3. Refresh offerings in the client (optional)
3. 刷新客户端的产品套餐(可选)
If you want the paywall to show the new price immediately for new purchasers, refresh offerings after the Play Console change propagates. The SDK call is unchanged:
kotlin
val offerings = Purchases.sharedInstance.awaitOfferings()
val pkg = offerings.current?.availablePackages?.firstOrNull() ?: return
val displayPrice = pkg.product.price.formattedLegacy cohort subscribers continue to pay their old price until Google migrates them. is always correct for new purchases.
pkg.product.price.formatted如果你希望付费墙立即向新购买用户显示新价格,可在Play Console变更传播完成后刷新产品套餐。SDK调用方式保持不变:
kotlin
val offerings = Purchases.sharedInstance.awaitOfferings()
val pkg = offerings.current?.availablePackages?.firstOrNull() ?: return
val displayPrice = pkg.product.price.formatted历史用户群组的订阅用户会继续支付旧价格,直到Google完成迁移。始终对新购买用户显示正确价格。
pkg.product.price.formatted4. Observe CustomerInfo on consent resolution
4. 监听同意结果对应的CustomerInfo
For opt in increases, RevenueCat updates when the consent outcome is known. Read entitlements the usual way.
CustomerInfokotlin
val info = Purchases.sharedInstance.awaitCustomerInfo()
val isPro = info.entitlements["pro"]?.isActive == trueDo not build a consent dialog. Google Play shows it.
对于需要选择加入的涨价,当同意结果确定后,RevenueCat会更新。按照常规方式读取权益即可。
CustomerInfokotlin
val info = Purchases.sharedInstance.awaitCustomerInfo()
val isPro = info.entitlements["pro"]?.isActive == true无需自行构建同意对话框,Google Play会显示该对话框。
5. Handle declines via webhook, if you care
5. (若需要)通过webhook处理用户拒绝的情况
If the user declines the opt in increase, the subscription cancels at period end. RevenueCat fires a webhook event. Treat it the same way you treat any other cancellation on the server side.
CANCELLATION如果用户拒绝了需要选择加入的涨价,订阅会在周期结束时取消。RevenueCat会触发 webhook事件。在服务器端,将其视为普通取消事件处理即可。
CANCELLATION6. Optional: notify affected users
6. 可选:通知受影响的用户
If you want to warn subscribers about an upcoming increase before Google's dialog appears, drive an in app banner from a RevenueCat webhook event or show a specific Offering to the affected cohort with a Targeting rule. This is an enhancement, not part of the price change contract.
如果你想在Google对话框出现前提醒订阅用户即将到来的涨价,可通过RevenueCat的webhook事件触发应用内横幅,或通过定向规则向受影响的用户群组展示特定的产品套餐。这是增强功能,不属于价格变更的必备流程。