NSURLSession下载无法实现断点续传的解决方案

问题描述:
最近在使用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 导致的]。让后台的同事配置一下就好了。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容