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

1,278 阅读6分钟

提醒开发者们:

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 日正式生效,因此请您提前进行检查,以确保您的应用准备就绪!