适配 Google Play 结算系统的最新特性

适配 Google Play 结算系统的最新特性

提醒开发者们:

2020 年 11 月 1 日之前,启用了订阅功能的应用,需要在应用中为帐号保留和恢复功能提供支持。此外,Google Play 控制台还会为所有订阅默认启用暂停订阅和重新订阅功能 (除非您明确选择停用)。

2020 年 11 月 2 日起,应用的更新必须以 Android 10 (API 级别 29)  或更高版本为目标平台。

在最新 Android 11 的发布内容中,Google Play 团队发布了一些新功能,可以帮助您 获得和保持应用的付费订阅用户,其中一点包括: Google Play 将更改一些订阅功能的默认设置。我们会在本文中介绍这些变化,以确保您能够提前为您的应用做好准备。

我们先来看一下从 2020 年 11 月 1 日开始会发生哪些变化。

接下来,我们会深入探讨这些变化对您的应用或游戏会造成什么样的影响。每种新功能我们都会基于两种不同的情况来讨论:

  1. 您的应用并未使用后端服务来跟踪订阅状态;
  2. 您的应用具备后端服务,它会通过实时的开发者通知来跟踪订阅状态。

账号保留功能

该功能具体是指 : 当用户尝试对某项订阅进行续订,但是付款出现了问题而导致续订失败,此情况下该用户的账号就会进入到账号保留状态,该状态最多会维持 30 天,在这期间用户将失去对该订阅内容的访问权限。

如果您的应用并未使用后端服务来追踪订阅状态 : 如果您的应用依赖于 queryPurchases() 返回的结果来获取最新的订阅状态,那么您无需做任何改动来支持账号保留功能。用户处于账号保留状态时,BillingClient.queryPurchases() 方法将不会返回相关订阅购买信息,当用户修复了付款方式问题后,该方法就会正常返回相关订阅。

如果您的应用使用了后端服务通过 RTDN 来追踪用户的订阅状态 : 一旦用户进入账号保留状态,就会发出 SUBSCRIPTION_ON_HOLD 通知。当用户修复了付款问题并且重新成功地订阅后,则会发送 SUBSCRIPTION_RECOVERED 通知。您需要确保您的后端服务处理了这些 通知,以保证用户订阅状态是最新的。

您可以在 官方文档 中查看更多关于账号保留的内容,也可以进一步了解如何正确处理这种状态。

订阅恢复

该功能具体是指 : 用户可能会在当前账单的订阅到期之前主动取消续订。当开启订阅恢复功能后,用户可以在订阅过期之前通过点击 Play Store 应用中的 Resubscribe  选项来重新订阅。若用户并未取消订阅,则此操作会恢复用户的订阅。若该订阅已经过期,用户则必须重新进行订阅。

如果您的应用并未使用一个后端服务来追踪订阅状态 : 如果您的应用依赖于 queryPurchases() 返回的结果来获取最新的订阅状态,那么您无需做任何改动来支持订阅恢复功能。只要用户的订阅未过期,即使用户在下一个付款周期之前暂时取消了订阅,BillingClient.queryPurchases() 方法依然会返回该订阅。

如果您的应用使用了后端服务通过 RTDN 来追踪用户的订阅状态 : 一旦用户触发恢复订阅操作,SUBSCRIPTION_RESTARTED 通知就会被发出来。如果您的应用通过 UI 界面提示用户一个订阅即将过期,那请确保在后端收到 SUBSCRIPTION_RESTARTED 通知后及时更新 UI。

您可以在 官方文档 中查看更多关于订阅恢复的内容,也可以进一步了解如何正确处理这种状态。

订阅暂停

该功能具体是指 : 用户可以对一个订阅执行一周到三个月的暂停操作。订阅暂停操作只会在当前周期结束后开始生效。当某个订阅被暂停后,用户不能再继续访问订阅内容。另外,queryPurchases() 方法也不会返回被暂停的订阅支付信息。

订阅暂停功能目前在 Play 管理中心中是默认关闭的,但是从 2020 年 11 月 1 日开始会自动启用。如果您的应用在该日期到来之前还未适配该功能,可以手动在 Play 管理中心中进行关闭。
 
如果您的应用并未使用一个后端服务来追踪订阅状态 : 如果您的应用依赖于 queryPurchases() 返回的结果来获取到最新的订阅状态,那么您无需做任何改动来支持订阅暂停的功能。BillingClient.queryPurchases() 方法不会返回被暂停的订阅支付信息。

如果您的应用使用了后端服务通过 RTDN 来追踪用户的订阅状态 : 一旦用户对某一订阅执行了暂停操作,会发送 SUBSCRIPTION_PAUSE_SCHEDULE_CHANGED 通知。直到当前结算周期结束,该订阅依然有效。当订阅进入暂停状态后,会发送 SUBSCRIPTION_PAUSED 通知。当订阅自动恢复后,或者是用户手动恢复了订阅,那么会发送 SUBSCRIPTION_RENEWED 通知。

您可以在 官方文档 中查看更多关于订阅暂停的内容,也可以进一步了解如何正确处理这种状态。

重新订阅

该功能具体是指 : 启用重新订阅功能后,用户可以在订阅失效后的最长一年内重新购买该订阅内容。此功能还允许用户在当前订阅结束之前再次购买该订阅。

重新订阅功能目前在 Play Console 中是默认关闭的,但是从 2020 年 11 月 1 日开始会自动启用。如果您的应用在该日期到来之前还未适配该功能,可以在 Play 管理中心中手动进行关闭。

如果您的应用并未使用一个后端服务来追踪订阅状态 : 如果您的应用依赖于 queryPurchases() 返回的结果来获取到最新的订阅状态,那么您无需做任何改动来支持重新订阅的功能。BillingClient.queryPurchases() 方法会在订阅过期之前返回该订阅支付信息。

如果您的应用使用了后端服务通过 RTDN 来追踪用户的订阅状态 : 当用户再次购买某一订阅,会发送 SUBSCRIPTION_RESTARTED 通知。后端接收到该通知后,您的应用应该恢复用户对订阅功能的访问权限。

您可以在 官方文档 中查看更多关于重新订阅的内容,也可以进一步了解如何正确处理这种状态。

对这些订阅功能的更改将于 2020 年 11 月 1 日正式生效,因此请您提前进行检查,以确保您的应用准备就绪!

版权声明

禁止一切形式的转载-禁止商用-禁止衍生 申请授权

脉脉不得语
脉脉不得语
Zhengzhou Website
Android Developer | https://androiddevtools.cn and https://androidweekly.io WebMaster | GDG Zhengzhou Funder & Ex Organizer | http://Toast.show(∞) Podcast Host

你已经成功订阅到 Android 开发技术周报
太棒了!接下来,完成检验以获得全部访问权限 Android 开发技术周报
欢迎回来!你已经成功登录了。
Unable to sign you in. Please try again.
成功!您的帐户已完全激活,您现在可以访问所有内容。
Error! Stripe checkout failed.
Success! Your billing info is updated.
Error! Billing info update failed.