问题描述:
最近在使用NSURLSession做下载的断点续传的时候,发现只能下载和暂停,恢复下载的时候不能继续上次结束的位置开始下载,原因是在如下取消的方法中resumeData返回为nil,无法记录上次文件下载的大小。
- (void)cancelByProducingResumeData:(void (^)(NSData *resumeData))completionHandler;
解决方案:去苹果官方的文档看了下API结果发现有其实是有明文提示的是自己没有注意。
[https://developer.apple.com/documentation/foundation/nsurlsessiondownloadtask/1411634-cancelbyproducingresumedata?language=objc]
一、看到苹果给的温馨提示:
只有满足以下条件,才能恢复下载:
1.自您第一次请求资源以来,资源没有变化
2.该任务是HTTP或HTTPS GET请求
3.服务器在其响应中提供ETag或Last-Modified标题(或两者)
4.服务器支持字节范围请求
系统尚未删除临时文件以响应磁盘空间压力
二、后来又查看了两篇博客:
1.[https://blog.csdn.net/ahhnyyp/article/details/50127091]
2.[https://www.cnblogs.com/TXSH/p/4737047.html]
结果是问题出现在服务器没有配置 ETag 或 Last-Modified 导致的]。让后台的同事配置一下就好了。