即将在我们的 Android 应用程序中构建订阅产品,但对于了解取消订阅的最佳方式有点不清楚。我们计划让用户取消的唯一方法是让他们去 Google Play 商店并明确取消,但在这种情况下,我们的后端不会收到通知。
Google Play 开发者 API 文档明确表示您不得向 API 查询所有订阅的状态,那么我们应该如何知道哪些用户取消了他们的订阅?
非常感谢任何帮助!
即将在我们的 Android 应用程序中构建订阅产品,但对于了解取消订阅的最佳方式有点不清楚。我们计划让用户取消的唯一方法是让他们去 Google Play 商店并明确取消,但在这种情况下,我们的后端不会收到通知。
Google Play 开发者 API 文档明确表示您不得向 API 查询所有订阅的状态,那么我们应该如何知道哪些用户取消了他们的订阅?
非常感谢任何帮助!
根据应用内订阅文档,没有检测用户何时取消订阅的机制。因为它不会立即取消。相反,它等待订阅到期的周期结束。
文件摘录(来源)
当用户取消订阅时,Google Play 不会为当前的结算周期提供退款。相反,它允许用户在当前计费周期结束之前访问已取消的订阅,届时它会终止订阅。例如,如果用户购买了每月订阅并在周期的第 15 天取消它,Google Play 将认为订阅在第 30 天(或其他日期,具体取决于月份)结束之前有效
当用户取消订阅时,应用程序不会收到任何通知。
订阅的行为是每当您在应用程序中查询库存时,如果订阅有效,将返回 SKU。订阅到期后,查询库存时不会返回 SKU。
根据此链接中的文档
只要订阅接近尾声,就可以运行批处理查询
文件摘录(来源):
仅在到期时查询订阅状态 — 一旦您的服务器检索到订阅令牌的到期日期,它不应该再次向 Google Play 服务器查询订阅状态,直到订阅到达或已超过到期日期。通常,您的服务器每天都会运行批处理查询来检查过期订阅的状态,然后更新数据库
以下服务器 api 可让您查询订阅状态:
autoRenewing
如果订阅已被取消,这些变量cancelReason
会通知您。
通过使用上述 API,您将能够实现一个系统,其中可以查询即将到期的订阅的状态,然后确定它们是否被取消。
取消订阅的详细信息可在此链接中找到。
注意:
文档指出,只要用户拥有有效订阅,您就应该继续提供内容。如果您计划在有人取消订阅的情况下拒绝访问该内容,将违反 Google 政策
文件摘录(来源)
重要提示:在任何情况下,您都必须继续提供订阅者通过其订阅购买的内容,只要任何用户都能够访问它。也就是说,您不得在任何用户仍然有效订阅内容时删除任何内容,即使该订阅将在当前计费周期结束时终止。
看起来现在可以接收有关订阅更改(续订、取消...)的服务器端通知:
In-app Billing API 提供服务器推送通知,使开发人员能够监控 Play 管理订阅的状态变化。
有关更多详细信息,请参阅此页面:https ://developer.android.com/google/play/billing/billing_subscriptions.html#realtime-notifications