苹果提供的NSURLSessionDownloadTask虽然能实现断点续传,但是有些情况是无法处理的,比如程序强制退出或没有调用cancelByProducingResumeData取消方法,这时就无法断点续传了。 使用NSURLSession和NSURLSessionDa ...
苹果提供的NSURLSessionDownloadTask虽然能实现断点续传,但是有些情况是无法处理的,比如程序强制退出或没有调用
cancelByProducingResumeData取消方法,这时就无法断点续传了。
使用NSURLSession和NSURLSessionDataTask实现断点续传的过程是:
1、配置NSMutableURLRequest对象的Range请求头字段信息
2、创建使用代理的NSURLSession对象
3、使用NSURLSession对象和NSMutableURLRequest对象创建NSURLSessionDataTask对象,启动任务。
4、在NSURLSessionDataDelegate的didReceiveData方法中追加获取下载数据到目标文件。
下面是具体实现,封装了一个续传管理器。可以直接拷贝到你的工程里,也可以参考我提供的DEMO:http://pan.baidu.com/s/1c0BHToW
//// MQLResumeManager.h//// Created by MQL on 15/10/21.// Copyright © 2015年. All rights reserved.// #import <Foundation/Foundation.h> @interface MQLResumeManager : NSObject /** * 创建断点续传管理对象,启动下载请求 * * @param url 文件资源地址 * @param targetPath 文件存放路径 * @param success 文件下载成功的回调块 * @param failure 文件下载失败的回调块 * @param progress 文件下载进度的回调块 * * @return 断点续传管理对象 * */+(MQLResumeManager*)resumeManagerWithURL:(NSURL*)url targetPath:(NSString*)targetPath success:(void (^)())success failure:(void (^)(NSError*error))failure progress:(void (^)(longlongtotalReceivedContentLength,longlong totalContentLength))progress; /** * 启动断点续传下载请求 */-(void)start; /** * 取消断点续传下载请求 */-(void)cancel; @end
原标题:ios断点续传:NSURLSession和NSURLSessionDataTask实现
关键词:IOS
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。