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

How do I distinguish between download tasks in a background session?

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

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

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

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

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

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