【问题标题】:NSURLSessionDownloadTask cancelByProducingResumeData return nullNSURLSessionDownloadTask cancelByProducingResumeData 返回 null
【发布时间】:2014-06-14 00:51:21
【问题描述】:

我使用 NSURLSessionDownloadTask 从服务器下载文件,它在后台会话中运行。我想在应用程序终止时保存恢复数据以恢复下载。但是,cancelByProducingResumeData 的调用总是返回 null。我无法弄清楚这个问题,因为我曾经成功地完成了一个可恢复下载任务的示例。有人遇到同样的问题吗?

【问题讨论】:

  • 某件事打动了我,所以值得一问:您是否检查过,当您调用取消时,任务的状态不是“正在取消”或“完成”?例如,如果会话的 invalidateAndCancel 被调用,就会发生这种情况。或者也可能在应用程序关闭期间?在应用程序关闭期间,我会更恰当地处理此问题,并从您在 URLSession:task:didCompleteWithError: 中收到的错误中获取恢复数据。

标签: ios nsurlsession resume-download nsurlsessiondownloadtask


【解决方案1】:

您知道请求是否满足cancelByProducingResumeData 方法文档中列出的标准吗?

只有满足以下条件才能恢复下载:

  • 该资源自您首次请求后未发生变化
  • 任务是 HTTP 或 HTTPS GET 请求
  • 服务器在其响应中提供 ETag 或 Last-Modified 标头(或两者)
  • 服务器支持字节范围请求
  • 临时文件未因磁盘空间压力而被系统删除

【讨论】:

  • 我已经考虑过这个,但不确定它是否满足所有条件。我从保管箱公用文件夹下载文件。我认为 Dropbox 服务器支持所有这些。
  • @LongNV 您可以使用Charles 观看请求并确认响应的标头...
  • 我现在可以处理它了,顺便说一句,感谢伟大的工具
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-21
  • 1970-01-01
相关资源
最近更新 更多