iOS 7发布了 NSURLSession,在Xcode7.x里面 NSURLConnection有效范围是iOS 2 - iOS 9,估计在iOS 10也将继续支持,但是NSURLSessison从iOS 7开始支持的,所以还是尽快替换吧。我在整理的时候发现NSURLSession下载文件的接口如下:
- (NSURLSessionDownloadTask *)downloadTaskWithRequest:(NSURLRequest *)request;
手动点暂停后保存下载的data,继续下载,接口代码如下:
//NSURLSessionDownloadTask 手动暂停
- (void)cancelByProducingResumeData:(void (^)(NSData * __nullable resumeData))completionHandler;
//继续下载
- (NSURLSessionDownloadTask *)downloadTaskWithResumeData:(NSData *)resumeData;
可是当我们遇到程序退出再加载进来依然需要保持断点下载的需求我们该怎么做?“这个功能实现不了!“,在我们iOS程序猿这没有实现不了的需求,OK,我们来分析下如何实现。
看NSURLSession的头文件,只有downloadTaskWithResumeData这个函数,参数NSData,那就简答明了了,很明显data里面肯定会包涵下载地址,下载了多少字节等信息,直接打印出cancelByProducingResumeData函数返回的resumeData:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSURLSessionD