bra*_*all 10 android in-app-purchase in-app-billing android-billing play-billing-library
我的用户SkuType.INAPP已从我的应用程序中购买了items().
在前面推荐的在应用程序内结算的实施中IabHelper.QueryInventoryFinishedListener会返回一个Inventory包含任何项目,他们所拥有.
在新的Play Billing Library中,我使用以下方法:
Purchase.PurchasesResult purchasesResult = mBillingClient.queryPurchases(BillingClient.SkuType.INAPP);
Run Code Online (Sandbox Code Playgroud)
假设响应代码成功,我查询:
purchasesResult.getPurchasesList()
Run Code Online (Sandbox Code Playgroud)
对于这一小部分用户,列表为空.
作为故障保护,对于上面的否定结果,我继续尝试:
mBillingClient.queryPurchaseHistoryAsync(BillingClient.SkuType.INAPP, this);
Run Code Online (Sandbox Code Playgroud)
该 onPurchaseHistoryResponse(final int responseCode, final List<Purchase> purchasesList)
成功详细购买.
对此感到困惑,我要求运行这两个实现的受影响用户确认以下内容:
根据这个帖子的建议,我让他们:
尽管如此,仍然只能queryPurchaseHistoryAsync正确识别他们的帐户拥有的项目.
问题:为什么?
该结算图书馆实现状态:
queryPurchaseHistoryAsync()返回用户为每个SKU进行的最新购买,即使该购买已过期,取消或已消耗.尽可能使用queryPurchases()方法,因为它使用本地缓存,而不是queryPurchaseHistoryAsync()方法.
我已在订单管理中确认购买有效且尚未取消.我不消耗它们,因此它们不能过期.
现在我有一个问题
鉴于对于这些用户我只能以上述方式识别他们的购买,我被迫为所有人实现这种故障保护.
除了因为必须这样做而感到沮丧之外,在您再次阅读之前,这似乎不是太大的问题:
queryPurchaseHistoryAsync()返回用户为每个SKU进行的最新购买,即使该购买已过期,取消或已消耗
因此,在我的标准实施中,我需要检查此购买是否仍然有效.
不幸的是,Purchase对象没有这样的方法来检查其有效性.
所以,我可能需要进行外部检查.
所有当我的应用程序启动时,我的逻辑决定是否显示广告.
救命.请.
| 归档时间: |
|
| 查看次数: |
543 次 |
| 最近记录: |