2011-12-16 62 views
2

我正在使用inApp付款處理iPhone應用程序:只要用戶支付一小筆費用,他就會收到應用程序的更新。 「更新」是冒險遊戲中的一種新的「章節」,它由文本和XML文件,圖像,聲音等組成,一般爲「資產」。資產下載時,它們形成應用程序內新章節(或階段或步驟)的內容。如何在iPhone應用程序中加載更新

我在尋找關於如何加載所有這些數據的建議:例如,下載時該設備可能意外停止工作(電池電量不足等),或者由於某種原因可能會斷開連接。這樣,更新的完整性就會丟失。我研究了一下,發現了使用md5校驗和或套接字的解決方案,但在開始之前我也想問一下。例如,我想知道下載一個大的zip文件是否是個好主意,或者下載小型未壓縮的文件會更好。

任何意見表示讚賞。謝謝。

回答

1

我有一個類似的設置,我所做的是維護一個項目安裝的數據庫。我還有一個單獨的可用項目列表,這些項目是從我的服務器定期更新的。

當用戶購買一個,該項目從「可用」列表複製到「已安裝」列表,狀態爲「已購買」。然後進入下載隊列。

下載後,狀態將移至「已下載」並完成一些安裝。然後狀態最終更新爲「已安裝」。

我通過讓應用程序檢查「已安裝」列表中沒有「已安裝」狀態的任何項目啓動(或未連接)來防止中斷。根據狀態,我可以重新啓動下載或重新安裝。

至於文件的完整性,我只是檢查一個已知的標題,但md5或其他校驗和會更好。

更新:我的應用程序只下載一個文件(sqlite數據庫),所以如果它被中斷,它必須從頭開始。我啓用了NSURLConnection支持的web服務器的deflate,因此壓縮是透明的。但我相信你對使用zip文件的興趣主要是爲了使下載更簡單。我曾考慮過在某個時候使用zip文件,但我無法找到一個簡單的方法來提取它。

0

我認爲在發佈遊戲時可以放置遊戲使用的所有資源,並且某些章節被鎖定,當用戶通過App Purchase購買章節時,您可以解鎖章節。 所以當用戶購買章節時,用戶不需要下載任何文件。

+0

不,這不是一個選項,因爲章節的內容由第三方添加,並且可以隨時更改。感謝您的溫柔回覆。 – AsTheWormTurns 2011-12-16 13:58:36

0

那麼你可以做的是:當他們付錢時,他們購買安裝下一部分應用程序的權利。這並不意味着它會自動安裝。

你應該做的是在應用程序內的列表中下載下載內容,以便每當他們訪問此列表時,應用程序使用WiFi連接測試他們是否有權安裝這部分應用程序。如果是這樣,程序檢查現有的安裝,或者你可以重新寫入文件或其他。

例如:

enter image description here

的鎖表明,用戶沒有祈禱,爲這些呢。如果此圖像在您的應用程序中,在加載之前,它會檢查數據庫或您的計算機上的某個內容,以檢查用戶是否已購買該階段,如果是,則返回Yes或Nay。

每當你點擊一個按鈕,它不會播放舞臺,它實際上下載文件。因此,將它命名爲糟糕的,它應該被命名爲「下載階段1」或類似的東西。


編輯: 這完全取決於應用程序,文件等。在大多數情況下,我只需要解壓縮文件,使其對用戶更容易的大小,但如果是非常大的文件,你應該使用壓縮文件。我從來沒有親自使用壓縮文件,但我認爲必須提取iphone中的文件會對某些用戶造成問題。

+0

我一定在問題中寫錯了。我不想知道如何組織整個應用程序。我想知道哪個是執行文件下載的最佳方式。 – AsTheWormTurns 2011-12-16 15:58:06

+0

@AsTheWormTns修改後的答案 – Gabe 2011-12-16 16:00:52

相關問題