NSURLSession断点下载

方式一:downloadTask+代理+resumeData的方式。

当用户点击暂停时,调用
[self.task cancelByProducingResumeData:^(NSData *resumeData){self.resumeData = resumeData;}];
将resumeData保存起来,因为resumeData保存了下载信息。
当用户点击继续是,调用
self.task = [self.session downloadTaskWithResumeData:self.resumeData];
用保存起来的resumeData继续下载。
但是当程序闪退时:在
-(void)applicationWillTerminate:(UIApplication *)application{}
中保存这些信息,当时这个方法比较短暂。并且当下载信息很多时,这样不太合理。

方式二:dataTask+代理+NSOutputStream写入文件的流对象。

NSOutputStream用来写数据。
通过请求获取文件的总长度@"Content-Length"。
直接通过[self.task suspend]暂停下载。
通过[self.task resume];
当程序闪退时,通过获取到文件的长度,来配置Range的下载范围。

你可能感兴趣的:(NSURLSession断点下载)