如何在所有新的Play计费库中查看订阅的购买状态?

jom*_*rge 2 android in-app-purchase in-app-billing google-play play-billing-library

嗨,我正在为应用内订阅使用新的Play Billing Library。 https://developer.android.com/google/play/billing/billing_library.html

一切工作完美,并能够订阅该产品。但是我没有找到任何方法来检查订阅的购买状态。我的意思是说它是活跃的还是过期的。

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

但是购买对象中没有购买状态方法,请检查以下链接 https://developer.android.com/reference/com/android/billingclient/api/Purchase.html

也看一下这部影片:https : //www.youtube.com/watch?v=9chvh1WYCvw&feature=youtu.be&t=301

如何检查购买状态?

cbn*_*cbn 5

这是一个古老的问题,您可能已经解决了。我刚刚开始使用新库,但我有同样的问题。我认为您必须阅读Purchase类的javadoc:

isAutoRenewing()
Run Code Online (Sandbox Code Playgroud)

对于任何已取消的订阅,这将返回false。对于任何活动的或处于宽限期的订阅,它返回true。

只是对此的更新。如果订阅已取消且尚未过期,则此操作将无效。

我发现上述评论员似乎意见不一致,这很奇怪。进一步的调查表明,两个不同的购买查询给出了不同的结果-javadoc似乎并不清楚。

queryPurchaseHistoryAsync(BillingClient.SkuType.SUBS, listener)
Run Code Online (Sandbox Code Playgroud)

如其javadoc所述,将返回所有内容-包括所有过期的订阅。使用此方法似乎没有办法区分活动订阅和非活动订阅。这将返回当前在Google服务器上的历史记录。

queryPurchases(BillingClient.SkuType.SUBS)
Run Code Online (Sandbox Code Playgroud)

仅返回当前的活动订阅。它立即返回缓存的结果。


Nic*_*cue 3

订阅过期后,它将不再出现在购买列表中。一些文档

  • 我无法证实这一点。对我来说,订阅仍然是列表中的成员。 (13认同)