如何在所有新的 Play Billing Library 中查看订阅的购买状态?

How to check purchase state of subscription in all new Play Billing Library?

您好,我正在使用新的 Play 结算库进行应用内订阅。 https://developer.android.com/google/play/billing/billing_library.html

一切都很完美,我可以订阅该产品。但是我没有找到任何方法来检查订阅的购买状态。我的意思是它是有效的还是过期的。

文档中说:然后您可以调用 Purchase 对象的各种方法来查看有关该项目的相关信息,例如其购买状态或时间。

但是Purchase Object中没有purchase state方法,查看下面link https://developer.android.com/reference/com/android/billingclient/api/Purchase.html

也看看这个视频: https://www.youtube.com/watch?v=9chvh1WYCvw&feature=youtu.be&t=301

如何查看购买状态?

一旦订阅过期,它将不再出现在购买列表中。 Some documentation

这是一个老问题,你可能已经解决了。我刚开始使用新库,我也有同样的问题。阅读购买的 javadoc class 我认为你必须使用:

isAutoRenewing()

对于任何已取消的订阅,这将 return 错误。 return对于任何处于活动状态或处于宽限期的订阅都是如此。

只是对此的更新。这在订阅已取消且未过期的情况下不起作用。

我觉得很奇怪,上面的评论员似乎意见不一。进一步的调查表明,两个不同的购买查询给出了不同的结果 - javadoc 似乎没有说清楚。

queryPurchaseHistoryAsync(BillingClient.SkuType.SUBS, listener)

正如它的 javadoc 解释的那样,return 一切 - 包括所有过期的订阅。使用它似乎没有办法区分活动和非活动订阅。这 return 是当前在 Google 服务器上的历史记录。

queryPurchases(BillingClient.SkuType.SUBS)

return仅当前有效订阅。它 return 立即成为缓存结果。