你的位置:首页 > 软件开发 > 操作系统 > ios断点续传:NSURLSession和NSURLSessionDataTask实现

ios断点续传:NSURLSession和NSURLSessionDataTask实现

发布时间:2016-08-26 17:00:06
苹果提供的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

IOS
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。