我已在应用帐单https://github.com/blundell/SimpleInAppPurchaseV3中实施此项目。除了并非所有购买的产品正在为Inventory
对象返回外,一切看起来都起作用。购买库存收集不显示所有已购买的产品,Google Play应用内结算
我开始与多个产品ID的具有相同的前缀,使用java包格式
acmestudio.myapp.upgrade1.red
acmestudio.myapp.upgrade1.blue
acmestudio.myapp.upgrade1.green
这是问题开始的地方。我购买的第一个,acmestudio.myapp.upgrade1.red工作并显示在库存购买的项目。
但是,后..购买其他的会:
- 一)获得成功处理,
- B),但没有得到在购买productIds列表随后返回
我想也许这是一个格式问题,所以我将点符号更改为下划线。然而,同样的事情发生了。现在我有这些编号的多个产品
acmestudio_myapp_upgrade1_red
acmestudio_myapp_upgrade1_blue
acmestudio_myapp_upgrade1_green
而且,它只能用于第一个。所以,现在在我购买的SKU列表,它具有: [acmestudio.myapp.upgrade1.red,acmestudio_myapp_upgrade1_blue]
而且出现这种情况,即使我看到从结算API返回此订单确认
PurchaseInfo:{"orderId":"GPA.1390-8158-3067-22151","packageName":"com.acmestudio.myapp”,
”productId":"acmestudio_myapp_upgrade1_red”,”purchaseTime":1455140848461,"purchaseState":0,
"purchaseToken":"akdnfgpkcnckkcdomomimihi.AO-J1OwKCGfAKHDDsBxbKjeVKRZ0hIOSXALhVPeYaKx2GsVGH6NbVDs4nj6sLf48oUy9Zs0MziVA7xFtebELB0Q6udcN_1fvaNynkFLVVJXJmZGeEiRy9c8KH7HIn2QK2SZc1EzB2NLtOoVu324s2EwPmmtLYKj6MA"}
我想我必须缺少一些步骤,因为我设置了调试器在这里停止..在IabHelper.java的github项目代码中。也就是说,这个问题发生在代码中,我甚至没有感动。 https://github.com/blundell/SimpleInAppPurchaseV3/blob/master/src/com/android/vending/billing/util/IabHelper.java#L814
ArrayList<String> ownedSkus = ownedItems.getStringArrayList(
RESPONSE_INAPP_ITEM_LIST);
这是我运行检查代码。通知我得到一个清单对象的2个实例:
-
- 在主线程
-
在非同步呼叫
List<String> moreSkus = null; Inventory inventory = billingHelper.queryInventory(querySkuDetails, moreSkus); IabHelper.QueryInventoryFinishedListener inventoryLstnr = new IabHelper.QueryInventoryFinishedListener() { @Override public void onQueryInventoryFinished(IabResult result, Inventory inv) { Log.d("Query inventory finished."); // Is it a failure? if (result.isFailure()) { Log.d("Failed to query inventory: " + result); return; } Log.d("Query inventory was successful."); } }; billingHelper.queryInventoryAsync(true, inventoryLstnr);
我在这里错过了什么? ..也许我需要独特的前缀?!接下来我会尝试一下,但似乎不应该出现这样的问题。