2013-01-18 132 views
0

下載從服務器重數據,我們正在建立一個iPhone應用程序,我們有在後臺下載應用內購買的問題,我想知道如果任何人有一個解決方案...使用單獨的線程

我們的應用程序內購買量非常大,爲35-40mb,每次購買包含5個項目,每個7-8mb,因此手機通常會進入待機狀態,或者用戶在下載購買之前切換應用程序,因此必須將應用程序內購買無縫地下載到後臺。

當我們下載購買時,我們必須從服務器下載約35-40mb,同時更新應用程序中的本地sqlite數據庫。我們已經測試了在前臺下載項目和它的工作正常,我們已經做了一些處理以保持下載過程在後臺繼續,並且下載繼續,我們可以看到它在調試器中工作。

但是我們有以下問題......

用戶開始下載 下載頁面上的應用程序顯示應用程序被下載 用戶離開應用程序或手機進入待機 用戶返回到App

此時應用程序啓動屏幕將加載並保持在屏幕上,直至8mb下載中的一個完成,然後完成後切換到應用程序的下載頁面。這對用戶來說真的很混亂,因爲他們認爲應用程序崩潰了。

那麼我們如何管理應用程序內購買,以便當用戶按下載時它開始在後臺下載並且應用程序的行爲正常,而下載正在進行中?因此,用戶離開應用程序,當他們返回時顯示正確的頁面下載進度。用戶在應用程序內導航,它工作正常。

一些觀察...

我必須連續運行NSURLConnection的五倍進行下載,因爲每個應用程序內購買了5個項目。

我注意到的事情是,當第一次下載正在進行中「didEnterBackground」方法沒有得到即使用戶按下主頁按鈕,但第一次下載過程完成之後再「didEnterBackground」方法不會得到所謂的調用。如果用戶將應用程序放入後臺並返回前臺,則應調用「didEnterForeground」,但不是。

我正在下載數據,使用不同的線程,然後「MainThread」,但仍然運行在相同的問題。

任何幫助將不勝感激。

回答

0
  • 看看AFNetworking它被許多人使用並加載到不同的線程上。在readme中有一個帶有進度的文件下載示例。
  • 您可以阻止iOS下載過程中進入待機模式:

    [UIApplication sharedApplication].idleTimerDisabled = YES; 
    
+0

感謝您的建議,但問題是:如果用戶按下home鍵(即強行送在後臺應用程序),然後一些數據丟失肯定會造成 –

0

嘗試看看...新AFNetworking'extension AFDownloadRequestOperation

這個類有額外的支持,以恢復部分下載,使用一個臨時目錄,並有一個特殊的模塊,與計算正確的下載進度會有所幫助,等

「不要忘了設置shouldResume到YES」 :)

對於AFDownloadRequestOperation您還可以檢查此AFNetworking not resuming download

UPD

在最壞的情況下..你可以嘗試"Task Completion for Long-Running Tasks"或背景"Task-Specific Background Processing" .. http://www.codeproject.com/Articles/124159/Hour-21-Building-Background-Aware-Applications

相關問題