如何区分后台会话中的下载任务?

Posted

技术标签:

【中文标题】如何区分后台会话中的下载任务?【英文标题】:How do I distinguish between download tasks in a background session? 【发布时间】:2017-12-01 16:27:49 【问题描述】:

我目前正在尝试对我的后台下载任务在网络切换期间神秘失败的问题进行一些调试,并发现一些文档建议我应该将多个任务放入单个后台会话中。

在会话中添加多个后台任务后,如何确定正在查看的任务?举个例子,假设我已经从服务器下载了一个数据条目列表,并且我正在使用后台会话处理来下载它们相关的缩略图。

当后台任务完成时,会话委托会收到对urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didFinishDownloadingTo location: URL) 的回调。

我可以在后台会话上设置一个标识符(事实上,你必须这样做);您如何处理个别任务?我希望能够在应用重新启动后将特定任务与特定数据对象重新关联,但似乎没有任何机制可以这样做。

我是否误解或遗漏了文档中的某些内容?

【问题讨论】:

您查看过taskDescriptiontaskIdentifier 属性吗? @rmaddy 这将是我在文档中缺少的项目,谢谢。 【参考方案1】:

NSURLSessionDownloadTaskNSURLSessionTask 的子类,它有一个可以设置的taskIdentifier 属性。因此,NSURLSessionDownloadTask 对象是一个NSURLSessionTask 的实例,您可以将其设置为taskIdentifier 属性。

【讨论】:

taskIdentifier 是 get-only 属性,不能设置。但是您可以“获取”它并将其存储在任务创建中。

以上是关于如何区分后台会话中的下载任务?的主要内容,如果未能解决你的问题,请参考以下文章

如何取消我恢复的 NSURLSessionDownloadTask 以恢复我上次启动应用程序时创建的下载(后台)任务

背水一战 Windows 10 (119) - 后台任务: 后台下载任务(任务分组,组完成后触发后台任务)

背水一战 Windows 10 (118) - 后台任务: 后台下载任务(任务分组,并行或串行执行,组完成后通知)

如何使用 AFNetworking 3.0 在后台下载大文件并在会话完成所有任务时显示本地通知

NSURLSession 后台会话中的 NSURLSessionDownloadTask 给出错误

如何增加后台任务的运行时间?