2017-03-06 83 views
1

我有一些應用程序爲我的應用程序購買,每個解鎖應用程序的某些部分。緩存應用程序購買或檢查Android應用程序每次啓動?

這將是真正具有在應用中購買狀態的最佳方式,但在一個正確的方式?:

  1. 商店購買,後的實際購買或恢復購買,在SharedPreferences和在應用程序啓動時閱讀它。這可能會產生問題:在退款的情況下,應用程序將繼續有價值。一個紮根的用戶可以編輯xml並添加購買項目,如果這樣做的話。

  2. 在應用程序啓動時執行一個queryInventoryAsync並將結果存儲爲SharedPreference以備將來在應用程序中使用。如果沒有網絡,這將允許使用先前的queryInventoryAsync結果中的SharedPreference值。

因爲谷歌遊戲客戶端現在緩存應用程序內本地設備上的賬單信息 ,您可以使用API​​第3版,通過一個getPurchases通話更頻繁地查詢此 信息,例如。 與以前版本的API不同,許多版本3 API調用 將通過緩存查找服務,而不是通過與Google Play的網絡 連接,這會顯着加快API的 響應時間。

那該怎麼辦?在每個應用程序啓動時queryInventoryAsync是否會因爲它應該使用緩存結果而創建任何問題?

回答

0

我在所有遊戲中的每個應用程序啓動時使用queryInventoryAsync,到目前爲止一直沒有問題(20萬用戶)。

+0

謝謝。如果'queryInventoryAsync'失敗,你還要存儲結果嗎? – Alin

+0

不,我不保存結果,以防萬一它失敗 –

+0

我不單獨存儲結果。我注意到的一件事是,用戶經常抱怨應用程序升級後應用程序無法識別以前的應用內購買。所以我懷疑緩存在升級過程中會被清除,如果應用程序無法及時查詢Google的服務器,那麼應​​用程序可能暫時顯示購買未完成。 – snark