在閱讀Apple有關使用新的iOS7 api(NSURLSession)下載後臺的文檔後,我感到有點失望。我相信,蘋果在管理在後臺網絡可用性暫停/恢復(或提供一個選項,這樣做),但沒有...NSURLSession後臺下載 - 恢復網絡故障
所以閱讀文檔,這是我們已經有了:
When any task completes, the NSURLSession object calls the delegate’s URLSession:task:didCompleteWithError: method with either an error object, or nil if the task completed successfully. If the task is a resumable download task, the NSError object’s userInfo dictionary contains a value for the NSURLSessionDownloadTaskResumeData key. Your app should use reachability APIs to determine when to retry, and should then call downloadTaskWithResumeData: or downloadTaskWithResumeData:completionHandler: to create a new download task to continue that download. Go to step 3 (creating and resuming task objects).
到目前爲止,我百思不得其解,但我的問題是:什麼建築是最好的處理網絡的損失和恢復在後臺下載?
在我身邊,我使用可達性,每次網絡可用時,我都會恢復所有任務(創建時通過NSArray引用),並在網絡丟失時掛起它們。這種運作良好前景,但爲背景,我需要在以下幾點幫助:
如果我的應用程序在前臺沒有連通,如果我去後臺無法連接我所有的任務仍然暫停,不會回來,如果網絡可用...
在後臺丟失網絡,停止所有我的下載/任務。 場景:
- 在前臺,我開始下載我的任務
- 我去後臺和10秒後,切換到「aireplan模式」
- 我所有的工作得到了一個錯誤。所以在方法URLSession:任務:didCompleteWithError:我恢復他們使用 downloadTaskWithResumeData或如果我不能(因爲有些沒有 足夠的恢復數據)我創建一個新的任務,而不恢復它(除非網絡回來那時候)。
- 然後我把無線網絡了
- 正如我仍然在後臺時,網絡又回來了,而無需啓動應用程序,我不能觸發「恢復」 ...
如何解決這些問題?我錯過了什麼嗎?
我分享你的失望。你提到你在等待Apple的回答。你有沒有收到他們的消息?分辨率是多少? – gavdotnet
與蘋果有很多交流,但沒有成果,建議使用酌情處理這些案件(但沒有及時獲得結果)的標誌。這種模式不是我的目標,我沒有把重點放在這個上,但是我的測試沒有成功。如果你已經測試了這個部分,那麼獲取信息仍然很有趣。 – Gros