lau*_*rie 14 java android restore play-billing-library
我正在使用Play Billing Library来触发和管理购买,从而解锁了应用中的额外功能.这部分正在运作.
但是,"恢复"购买的最佳方式是什么.比如说,购买该应用程序的人购买了一部新手机.登录Play商店,下载我的应用程序,然后发现正在显示"升级"的付款屏幕.iOS有一个特定的方法,但我不知道Android的一个方法.
我的想法是查询Play商店并确认该帐户以前是否已成功购买该商品,如果是,那么我将在应用程序内调用本地升级功能.
看来有两种类似的方法.但是我应该在这种情况下使用哪一个?用户要么擦了手机还是买了新手机?
queryPurchases()?还是queryPurchaseHistoryAsync()?
Hug*_*otl 11
你应该用queryPurchases.这将为您提供每个SKU的所有当前活动(非消费,未取消,未过期)购买.
queryPurchaseHistoryAsync不会做你需要的,因为它只会给你一个每个SKU 最近购买的清单.他们可能已经过期,被取消或被消费,而且无法分辨.因此,此响应不能用于说明在您的应用中应用哪些购买.
据我所知,唯一有效的用途queryPurchaseHistoryAsync是为用户提供他们的购买历史列表.这有点奇怪.
另请注意:queryPurchases是同步的,因此在大多数情况下,它需要在某种后台工作线程中运行.我跑了一个AsyncTask.
我知道有点晚了,但我自己才发现这一点。分享我的答案,让其他人受益。
所以我了解到它queryPurchases()在您的设备上本地缓存,但在您致电时更新queryPurchaseHistoryAsync()
我从这里的Stackoverflow 答案中发现
所以我的解决方案是当想要在新设备上恢复购买或重新安装我的应用程序时。调用queryPurchaseHistoryAsync()然后在回调onPurchaseHistoryResponse()调用中queryPurchases()查找用户过去购买的任何购买状态List<Purchase>。PurchasesResult
如果有预期购买,您的应用程序可以授予他们过去购买的权利。
小智 6
每个文档queryPurchases使用Play商店应用缓存来获取结果,同时queryPurchaseHistoryAsync实际检查购买AP是否有最新购买。因此,您应该检查一下Async方法。
queryPurchases
获取您在应用内购买的所有商品的购买详细信息。此方法使用Google Play商店应用的缓存,而无需启动网络请求。
queryPurchaseHistoryAsync
返回用户对每个SKU的最近购买,即使该购买已过期,取消或已使用。
另外,请确保检查文档。建议Cache purchase details on your servers。
https://developer.android.com/google/play/developer-api.html#practices