queryPurchases() vs queryPurchaseHistoryAsync() 为了“恢复”功能?

我正在使用Play计费库来触发和管理购买,这反过来又解锁了应用程序中的额外功能。这部分正在工作。

但是,“恢复”购买的最佳方式是什么。例如,假设购买了该应用程序的人购买了一部新手机。登录到Play商店,下载我的应用程序,然后发现正在显示“升级”的付款屏幕。iOS有一个特定的方法,但我不知道Android有一个。

我的想法是查询Play商店并确认该帐户以前是否已成功购买了该项目,如果是这样,那么我将调用应用程序内的本地升级功能。

似乎有两种类似的方法。但是,在这种情况下我应该使用哪一个呢?用户在哪里擦除了手机或购买了新手机?

queryPurchases()?或?queryPurchaseHistoryAsync()


答案 1

您应该使用 .这将为你提供每个 SKU 的所有当前有效(未消费、未取消、未过期)购买。queryPurchases

queryPurchaseHistoryAsync不会执行您需要的操作,因为它只会为您提供每个SKU的最新购买列表。它们可能已经过期,被取消或被消耗,并且无法分辨。因此,此响应不能用于告知要在应用中应用哪些购买。

据我所知,唯一有效的用途是为用户提供其购买历史记录的列表。这有点奇怪。queryPurchaseHistoryAsync

还要注意:它是同步的,所以在大多数情况下,它需要在某种后台工作线程中运行。我在一个.queryPurchasesAsyncTask


答案 2

根据文档,使用Play商店应用缓存来获取结果,同时实际检查购买AP中最近购买的次数。因此,在您的情况下,您应该检查该方法。queryPurchasesqueryPurchaseHistoryAsyncAsync

queryPurchases

获取在应用中购买的所有项目的购买详细信息。此方法使用Google Play商店应用程序的缓存,而无需发起网络请求。

queryPurchaseHistoryAsync

返回用户为每个 SKU 所做的最近一次购买,即使该购买已过期、已取消或已消耗。

另外,请务必检查文档。它建议 .https://developer.android.com/google/play/developer-api.html#practicesCache purchase details on your servers


推荐