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

标签 ios nsurlsession nsurlsessiondownloadtask

问题来了:如何使用新的后台传输服务一个一个地下载多个文件(包括应用挂起的情况)?我读了这个awesome tutorial on objc.io并让它为一个文件工作。但是我需要一个一个地下载文件(所以添加多个NSURLSessionDownloadTasks是行不通的(因为下载URL只在短时间内有效)

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

更新:

抱歉,我可能不清楚实际问题是什么:一般情况下并不是我没有收到有关任务完成的通知,而是我没有application:handleEventsForBackgroundURLSession:completionHandler: 当应用在后台运行时调用第二个下载任务。我确实为第一个下载任务调用了它(当应用程序在前台时启动,然后在下载完成之前转到后台)然后我触发第二个下载任务,调用我得到的 completionHandlerapplication:handleEventsForBackgroundURLSession:completionHandler: 中并且永远不会为第二个文件调用此方法。

最佳答案

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

关于ios - 使用 iOS 后台传输服务下载多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22842933/

相关文章:

ios - 下载完成时通过 NSURLSession/NSURLSessionDownloadTask 发送本地通知

ios - 从 Swift 中的通用 T.Type 获取对象

ios - 在 Parse 后端保存 Stripe customerId

iOS更改标签的行数

ios - Git - Xcode 文件计划在 Project Navigator 'D' 中删除

ios - 每个主机的最大并发 Http 连接数,Alamofire?

ios - Swift 动态转换因 HTTP GET 请求而失败

ios - 在下载时从 NSURLSessionDownloadTask 访问字节

json - 使用带参数的 POST 请求获取 JSON 结果

swift - 下载音频文件