1

嗨,我遵循了这个关于如何将文件下载(和恢复下载)到 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
    }
}
4

0 回答 0