Android 如何在所有新的播放计费库中检查订阅的购买状态?

Android 如何在所有新的播放计费库中检查订阅的购买状态?,android,google-play,in-app-purchase,in-app-billing,play-billing-library,Android,Google Play,In App Purchase,In App Billing,Play Billing Library,您好,我正在使用新的播放计费库进行应用内订阅。 一切都很完美,我可以订阅该产品。但是我没有找到任何方法来检查订阅的购买状态。我的意思是它是活动的还是过期的 文档中写道:然后可以调用Purchase对象上的各种方法来查看有关该项目的相关信息,例如其购买状态或时间 但在purchase对象中没有purchase state方法,请检查下面的链接 也请看一下这段视频: 如何检查购买状态?一旦订阅过期,它将不再在购买列表中 这是个老问题,你可能已经解决了。我刚开始使用新图书馆,我有同样的问题。阅读

您好,我正在使用新的播放计费库进行应用内订阅。

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

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

但在purchase对象中没有purchase state方法,请检查下面的链接

也请看一下这段视频:


如何检查购买状态?

一旦订阅过期,它将不再在购买列表中

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

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

这只是一个更新。如果订阅已被取消且尚未过期,则此操作不起作用

我觉得奇怪的是,上述评论员似乎有分歧。进一步的调查显示,两个不同的购买查询给出了不同的结果——javadoc似乎没有明确说明这一点

queryPurchaseHistoryAsync(BillingClient.SkuType.SUBS, listener)
正如其javadoc所解释的,将返回所有内容,包括所有过期的订阅。使用此选项,似乎无法区分活动订阅和非活动订阅。这将返回当前在Google服务器上的历史记录

queryPurchases(BillingClient.SkuType.SUBS)

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

Ya我遇到了相同的解决方案。PurchasesList仅包含活动订阅。如果PurchasesList大小为零,则表示没有活动订阅。我无法确认。对我来说,订阅仍然是列表中的一员。我同意@romanescu在这里的相同问题,我如何检测订阅何时结束。如果sub在列表中始终可见,他们应该添加一个状态“expired/active”或类似的状态。一旦订阅过期,它将不再在该列表中可用(从playstore应用程序取消订阅,等待其过期)。对我来说很好。@romaneso我也面临同样的问题。你找到解决办法了吗?