Android InAppBilling v3 queryInventoryAsync不会返回有关其他设备上已购买商品的信息

时间:2014-04-16 12:24:29

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

我正在使用InAppBilling支持开发Android应用程序。 有以下算法:

  1. 检查用户购买并显示的内容
  2.     mHelper.queryInventoryAsync(false, null, listener)
    
    1. 然后检查用户可以购买的内容(为了显示一些对话框)
    2.     mHelper.queryInventoryAsync(true, skuList, listener)
      

      一切设备(手机)上的一切正常。

      然后我在平板电脑上安装应用程序(使用相同的帐户),但有关购买项目的信息不可用。

      (有关用户可以购买的商品的信息,我可以成功获得。)

      如何在其他设备(使用相同的帐户)上获取有关付费项目(用户购买的商品)的信息?

      - 更新 -

      非常奇怪的用例:

      1. 用户在手机上使用Android InAppBilling购买 3个可用的项目。

      2. 检查2刚刚在手机上购买的物品。它们是可见的。

      3. 在平板电脑(或其他设备)上安装应用。

      4. 检查2只是在平板电脑上买的物品。它们也是可见的。

      5. 在手机上购买第3项

      6. 检查手机上的第3项。它是可见的。

      7. 检查平板电脑上的第3项。 不可见

      8. 源代码中会发生什么:

        IabHelper.java

        Bundle ownedItems = mService.getPurchases(3, mContext.getPackageName(),
                        itemType, continueToken);
        ...
        
        ArrayList<String> ownedSkus = ownedItems.getStringArrayList(
                        RESPONSE_INAPP_ITEM_LIST);
        ArrayList<String> purchaseDataList = ownedItems.getStringArrayList(
                        RESPONSE_INAPP_PURCHASE_DATA_LIST);
        ArrayList<String> signatureList = ownedItems.getStringArrayList(
                        RESPONSE_INAPP_SIGNATURE_LIST);
        

        考虑数字项目5-7(刚买了第3项):

        1. 在手机上我们有关于3件商品的信息

        2. 在平板电脑上,我们有2个购买物品的信息(第1和第2)。 但是为什么第三项不在这里?

1 个答案:

答案 0 :(得分:2)

看起来像是Google Play的问题。可以使用Google Play应用的清算缓存或重启设备进行修复。