确定Google Play一次性产品是否处于活动状态(IAB)

时间:2019-03-29 07:17:04

标签: android in-app-purchase in-app-billing

我们面临着一些有趣的场景。在我们的其中一个生产应用中,有用户向我们表明他们是在此之前购买了该应用,即使如此,他们也无法使用这些高级功能。

在我们的应用程序中,我们将IAP(Google Play计费库,而不是IABHelper)与一次性产品方法一起使用:我们让用户购买该应用程序,然后再不消费该产品。我们采用的方法是:在阅读了一些问题并检查了文档之后,我发现BillingClient.queryPurchases(INAPP)会在本地扫描扫描购买的商品,并且没有闲置的产品,并且由于他们不在那儿,如果高级功能处于活动状态,我们将其禁用。

BillingClient.queryPurchaseHistoryAsync(INAPP, listener)返回所有产品,无论它们是否处于活动状态,但是该产品不是订阅,因此Purchase.isAutoRenewing()始终为false。

这是问题所在:如果我们擦除了Google Play的数据或重置了手机并再次下载了该应用程序,由于Google Play中的数据已删除,BillingClient.queryPurchases(INAPP)会返回一个空列表,即使用户购买了应用之前。在这种情况下,BillingClient.queryPurchaseHistoryAsync(INAPP, listener)方法似乎很有用,但是它不包含有关产品有效还是退款的任何信息。

最后一种情况是,如果我们退还了产品以关闭高级功能(或者由于没有本地信息而将其激活),但我们没有任何产品可购买且没有使用{ {1}}不包含有关该产品是否有效的任何信息,它只是存在,表示该产品之前已被购买。那么我们怎么知道有人购买了该产品却没有退款?

0 个答案:

没有答案