嗨,我遵循了这个关于如何将文件下载(和恢复下载)到 iPhone 的优秀教程。
一切正常,除了我从某种方式下载文件的服务提供商不允许download-resume
工作。
Apple 表示只有满足以下条件才能恢复下载(请参阅下面的项目符号)。因此,由于以下几点之一,我dwonload.cancel(byProducingResmeData: ..)
可能会返回:data = nil
- 自您第一次请求资源以来,该资源没有更改
- 任务是 HTTP 或 HTTPS GET 请求
- 服务器在其响应中提供 ETag 或 Last-Modified 标头(或两者)
- 服务器支持字节范围请求
- 由于磁盘空间压力,临时文件没有被系统删除
不幸的是,我的服务提供商似乎没有满足以上几点(他们悬而未决的明确答案......)。
无论如何 - 还有另一种方法可以在 iOS 中恢复后台下载任务吗?
如果我能坚持下去URLSessionDownloadTask
- 这会有所帮助。但是我该怎么做呢?
这是我通常保留resumeData的代码。但不幸的是,就我而言,这data
始终是nil
.
func pauseDownload(_ file: File) {
guard let download = activeDownloads[file.previewURL] else { return }
if download.isDownloading {
download.task?.cancel(byProducingResumeData: { data in
download.resumeData = data
// data unfortunately always nil !!!!!!!!!!!!!!!!!!!!!
})
download.isDownloading = false
}
}