使用iOS后台传输服务下载多个文件

时间:2014-04-03 15:57:40

标签: ios nsurlsession nsurlsessiondownloadtask

以下是一个问题:如何使用新的后台传输服务逐个下载大量文件(包括应用程序暂停时的情况)?我读了这个awesome tutorial on objc.io并让它适用于一个文件。但我需要逐个下载文件 (因此添加多个NSURLSessionDownloadTasks将无效(因为下载网址只能在很短的时间内有效)

基本上我要做的是在应用程序被通知application:handleEventsForBackgroundURLSession:completionHandler:之前完成上一次下载后安排另一次下载。但是我只调用了一次这个方法。知道为什么吗?关于如何在暂停应用程序时实现多个文件的顺序下载的任何建议都表示赞赏。

更新:

抱歉,我可能不清楚实际问题是什么:并不是我一般都没有收到关于任务完成的通知,而是我没有application:handleEventsForBackgroundURLSession:completionHandler:要求第二个下载任务时该应用正在backgorund中运行 。我确实调用了第一个下载任务(在应用程序处于前台时启动,然后在下载完成之前转到后台)然后我启动了第二个下载任务,调用completionHandler我进入application:handleEventsForBackgroundURLSession:completionHandler: 1}}并且永远不会为第二个文件调用此方法。

2 个答案:

答案 0 :(得分:2)

我建议在NSURLSessionTaskDelegate' - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error中添加下一个文件。每当前一个任务完成时都会调用此方法,因此看起来是将下一个文件排入队列的合理选择。

答案 1 :(得分:1)

从这个教程的角度来看(http://www.appcoda.com/background-transfer-service-ios7/)看起来你必须同时开始下载这两个文件。由于您有一个会话中每个主机的最大连接数配置,我想您可以将并行下载限制为1,然后启动两个下载。

我目前正在尝试将其移植到MonoTouch ......看起来很有希望......