NSURLSESSION 后台下载多个

Posted

技术标签:

【中文标题】NSURLSESSION 后台下载多个【英文标题】:NSURLSESSION background download multiple 【发布时间】:2014-08-12 01:14:52 【问题描述】:

我有这个要求,

我需要在后台下载文件的播放列表。每个文件在播放列表中都是不同的 url。只有在第一个文件完成后,我才能开始下载第二个文件的问题。

以前有没有人遇到过这个问题。

【问题讨论】:

我正在连接一个本地机器,它一次只能处理一个请求。我面临的问题是在哪里提交第二个的 resumetask。如果我这样做,如果我在 didFinishDownloadingToURL 中调用它,则 URLSessionDidFinishEventsForBackgroundURLSession 它的 nt 会被调用,应用程序不会将其视为后台下载,并且线程将在 30 秒后暂停 我没有进行详尽的测试,但我已经重现了你的行为,因为随后在didFinishDownloadingToURL 中安排的请求没有在后台继续。我唯一可以建议的其他事情是(a)为下一次下载创建一个具有不同标识符的新后台会话;或 (b) 尝试排队所有下载并将 NSURLSessionConfiguration 上的 HTTPMaximumConnectionsPerHost 设置为 1。显然,最好修复服务器以接受并发请求(因为您会看到更好的性能方式)。 setting the number of concurrent downloads per host 对那个会话的一个,并同时将它们全部排队呢?如果你在后台添加新东西,在你的 didFinishDownloading 结束时,不能保证 ios 会优先考虑它们,据我所知,因为它看起来不像是一个专门的用户触发操作。 【参考方案1】:

发布通知并在主线程上观察它。只需构建您自己的请求队列,当发出通知时,检查队列中是否有剩余请求并根据需要将其关闭。

【讨论】:

以上是关于NSURLSESSION 后台下载多个的主要内容,如果未能解决你的问题,请参考以下文章

NSURLSession Threads:跟踪多个后台下载

iOS NSURLSession 实现网络请求-文件下载-上传-后台下载

iOS NSURLSession 实现网络请求-文件下载-上传-后台下载

NSurlSession - 下载许多文件

使用 NSURLSession 如何在取消下载任务时获取接收到的数据或临时文件位置

NSURLSession 上传任务超时