我已在應用帳單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);
我在這裏錯過了什麼? ..也許我需要獨特的前綴?!接下來我會嘗試一下,但似乎不應該出現這樣的問題。