2014-09-19 70 views
14

我被Google In App v3卡住了 - 我測試了沒有消費的購買(例如,應用程序在購買和消費之間崩潰) - 現在我不找不到出路。Android消費品:「已經擁有該商品」,但inventory.hasPurchase()爲虛假

如果我再次嘗試購買,則表示「您已經擁有該商品」。但是,當我測試的所有權,它說我不擁有它:

Inventory inv = mHelper.queryInventory(false, null); 
inv.getPurchase(sku); // null 
inv.hasPurchase(sku); // false 

我可以不消耗任何東西,因爲我沒有購買消費。如何在這裏繼續?

編輯 重現它像下面這樣:購買應用內消耗品,然後禁用互聯網連接。之後,您幾個小時內無法再購買該產品。剛剛通過Play商店(Diamond Digger Saga)的流行應用進行測試,我的行爲完全相同。真的沒有可能避免/解決這個問題嗎?

+0

您是否使用您的Google帳戶登錄了您的Android設備? – 2014-09-23 08:52:15

+0

是的 - 我需要登錄到該帳戶才能從Play商店中的測試版測試人員加載應用 – swalkner 2014-09-23 09:52:59

+0

試用庫存inv = mHelper.queryInventory(true,list_of_skus);? – ElDuderino 2014-09-23 15:59:00

回答

0

我遇到了這個確切的問題。我在手機上有兩個Google帳戶,一個是開發者帳戶(我愚蠢地使用我的個人帳戶),另一個是我在開發者控制檯註冊的測試帳戶。我已經從手機上的帳戶中刪除並重新添加了開發者帳戶,這使我可以從我的應用進行測試購買,並考慮開發者帳戶是否是此列表中的第二個帳戶,它將使用第一個帳戶進行購買。

唉,經過幾次運行的應用程序後,我遇到了你的問題。我放棄了試圖同時從手機中刪除開發者帳戶。雖然令人難以置信的不便,但是這樣做卻解決了這個問題,並且允許我測試購買,消費,查詢等。

0

如果您正在做的一切都正確並且您的代碼沒問題 - 最可能的問題是緩存的Google Play服務數據。

例如,當您在設備A上進行測試購買 - 在您的設備B上(使用相同的Google帳戶登錄),您將在一段時間內不購買您的產品而繼續收到inventory。而你的inventory.getPurchase(sku)將返回nullinventory.hasPurchase(sku)將返回false;

要解決此問題,請嘗試打開Goog​​le Play並使用Recent Apps按鈕將其關閉(單擊它,然後將應用程序劃過應用程序),這將比通常的「後退」按鈕更快地終止應用程序。然後關閉設備幾分鐘。

我們的目標是讓Google Play更新緩存。

請確定您使用的是WiFi,因爲如果您使用的是移動數據,它可能會更新很少。 最終數據將被更新,您將得到您的購買。 在我的情況下,它發生在5分鐘或smth之後。