我的应用程序有一个一次性的、不可使用的IAP来关闭广告。我正在尝试为我的应用程序提供一个“恢复购买”选项。在用户卸载应用程序或迁移到新设备的情况下,他们可以选择恢复其过去的一次性购买。
我的应用程序遵循谷歌文档https://developer.android.com/google/play/billing/integrate中描述的购买流程
我已经寻找了一些例子来恢复过去购买的不同设备,但我找到的所有例子都是引用AIDL方法的过时的。
我已经研究了方法、BillingClient.queryPurchases()
和BillingClient.queryPurchaseHistoryAsync()
。queryPurchaseHistoryAsync()
提供过去所有采购的PurchaseHistoryRecord
列表,包括取消的采购,但不提供采购状态,以确定其中任何一项是已完成采购还是待定采购。
相比之下,queryPurchases()
会给出一个购买列表和他们的状态,但只针对设备。如果用户在不同的设备上创建IAP,它将返回一个空列表。
我没有后端,因为我是一个资源有限的独立开发人员,所以我的应用程序必须是自包含的。
任何帮助都是非常感谢的。谢谢。
发布于 2021-05-26 01:19:49
所以我了解到,queryPurchases()
被缓存在您的设备本地,但是当您调用queryPurchaseHistoryAsync()
时会更新它
我从这个堆栈溢出答案中发现了here
因此,我的解决方案是,当想要在新设备上恢复购买,或重新安装我的应用程序时。调用queryPurchaseHistoryAsync()
,然后在onPurchaseHistoryResponse()
的回调中调用queryPurchases()
,并在List<Purchase>
中从PurchasesResult
查看用户过去购买的任何商品的购买状态。
如果有预期的购买,你的应用程序可以授予他们过去购买的权利。
https://stackoverflow.com/questions/67667388
复制相似问题