2013-12-17 78 views
2

我有TrivialDrive應用程序的工作,但我仍然有關於消費品購買的問題。 。 。應用內結算TrivialDrive樣本中的消耗品購買

該應用程序從onCreate事件開始,執行queryInventoryAsync調用以查看此用戶的廣告資源,並在其他產品中檢查Google廣告資源中是否有任何氣體。但在我看來,永遠不會有任何天然氣,因爲每當用戶購買天然氣時,我們都會「消費」它進行消費同步呼叫。

似乎天然氣庫存永遠不會保留在谷歌服務器上,並且consumeAsync只是完成消耗品的計費。 (也許它應該被稱爲billForConsumableAsync而不是consumeAsync?)

TrivialDrive應用程序始終將消耗品庫存保存在共享首選項內存中。

如果這都是真的,那麼爲什麼應用程序檢查谷歌服務器上的天然氣庫存。永遠不會有任何。另外,如果用戶在另一臺設備上運行我的應用程序,他將不會看到他的氣體清單,因爲它保存在其他設備的內存中。

因此,我的理解是,通過應用內結算,消費品庫存永遠不會保留在谷歌服務器上 - 它必須由應用程序管理。這似乎是處理它的錯誤方法。

我不明白什麼? 謝謝, 加里

回答

0

從開發人員的角度來看,這確實看起來確實是錯誤的方式來處理它。但從Google的角度來看,它非常有吸引力,因爲它可以最大限度地減少服務器的負載。

0

消費品(例如用於其他天然氣或虛擬貨幣等)通常被理解爲僅記入一個設備。所以,如果你擁有手機和平板電腦,並且你在手機上購買更多的氣體,那麼平板電腦上的氣體就不會增加。這就是爲什麼可用氣體(或虛擬硬幣餘額或其他)僅存儲在設備本地而不是中央服務器上的原因。

這樣做的原因之一是因爲它不可能使其以任何其他方式工作(爲所有設備共用儲氣罐),因爲您不能依靠事實隨時連接互聯網以更新您的服務器。所以,如果你用100加侖的天然氣填充你的共享水箱,那麼你可以將你的手機和平板電腦設置爲飛機模式,並在兩臺設備上使用全部100加侖(因爲平板電腦永遠不會知道你有也一直在打電話,反之亦然)。下次您的互聯網連接可用時,您的共用儲罐中最終會產生-100加侖的氣體。

onCreate做了queryInventoryAsync -call的原因是,應用程序可以捕獲並完成購買完成的交易(即用戶獲得計費),但該應用程序在它有時間實際記錄購買的額外天然氣之前死亡。

但是:我認爲谷歌在設計此購買流程時實際犯了一些錯誤!您可以在my related question on this issue中閱讀更多信息。這個問題也可能有助於更詳細地解釋爲什麼你需要做queryInventoryAsync-呼叫以及其他需要注意的事項。

相關問題