2013-11-14 54 views
2

我的應用程序需要下載一個批處理文件與下列要求:下載批iOS的7個文件,在後臺,低優先級,只要尚未下載

  1. 批應在一定程度上處理訂購(從不以同時下載文件爲代價)。
  2. 如果應用程序關閉,下載應該會在後臺繼續。
  3. 用戶可能隨時觸發其他下載。這些下載應該優先於批處理。
  4. 假設用戶可能觸發批量中任何文件的下載,如果文件已經下載,則不應再次下載。我應該能夠在開始實際下載之前檢查文件是否已經下載,或者從隊列中刪除它。

這當然可以通過很多樣板代碼來實現(太多的帖子在這裏)。使用iOS 7全新NSURLSession和/或AFNetworking 2.0來做到這一點最簡單的方法是什麼?

+0

我要指出,這是這個問題的一個更具體的情況:http://stackoverflow.com/questions/19513886/download-several- files-in-background-ios-7-only?rq = 1 – hpique

回答

0

我的投籃是:

  • 做一個子類的NSOperation它處理僅有1下載。
  • 設置2 NSOperationQueues,高優先級隊列和低優先級隊列。您還可以爲每個隊列設置不同的併發操作。

對於每次下載,您都可以在其中一個隊列中添加操作。

下載文件最簡單的方法可能不是AFNetworking或NSURLSession,但這取決於您的要求。如果你只需要一個簡單的立即下載,你可以使用這樣的事情:

NSData *downloadData = [NSData dataWithContentsOfURL:yourURL]; 
+0

謝謝@Leijonien。這不符合要求2.它與我現在的非常相似,它需要很多代碼來處理要求3和4.我希望在AFNetworking或iOS 7中使用更簡單,不太乾擾的方法可能。 – hpique

+0

對不起,沒有正確閱讀。所以AFNetworking可能是最好的選擇。你檢查過這個嗎? http://stackoverflow.com/questions/7800614/does-afnetworking-have-backgrounding-support – Leijonien

+0

我不認爲這與NSURLSession的後臺配置完全相同,後者在應用程序暫停時繼續。 https://developer.apple.com/library/ios/documentation/cocoa/Conceptual/URLLoadingSystem/Articles/UsingNSURLSession.html#//apple_ref/doc/uid/TP40013509-SW44 – hpique