iOS -- NSURLSession 实现断点下载
2016-02-29 00:00
549 查看
iOS -- NSURLSession 实现断点下载
NSURLSession是iOS7中新的网络接口,它与咱们熟悉的NSURLConnection是并列的。在程序在前台时,NSURLSession与NSURLConnection可以互为替代工作。注意,如果用户强制将程序关闭,NSURLSession会断掉。
NSURLSession提供的功能:
1.通过URL将数据下载到内存
2.通过URL将数据下载到文件系统
3.将数据上传到指定URL
4.在后台完成上述功能
如果想更深入的了解NSURLSession 请点击 http://www.cocoachina.com/industry/20131106/7304.html
好啦!步入正题,断点下载的实现
控件已经拖好,并且关联了点击事件,下面就是代码部分了。
在viewController.m 文件中声明属性
2.创建一个任务配置对象
在viewDidLoad 中写入一下代码
3.下载过程中需要实现代理的方法
4.下载完成调用的方法
5.开始下载的方法
6.暂停下载
这只是做了个小小的介绍,希望对有需要的童鞋有帮助。。。。
NSURLSession是iOS7中新的网络接口,它与咱们熟悉的NSURLConnection是并列的。在程序在前台时,NSURLSession与NSURLConnection可以互为替代工作。注意,如果用户强制将程序关闭,NSURLSession会断掉。
NSURLSession提供的功能:
1.通过URL将数据下载到内存
2.通过URL将数据下载到文件系统
3.将数据上传到指定URL
4.在后台完成上述功能
如果想更深入的了解NSURLSession 请点击 http://www.cocoachina.com/industry/20131106/7304.html
好啦!步入正题,断点下载的实现
控件已经拖好,并且关联了点击事件,下面就是代码部分了。
在viewController.m 文件中声明属性
@property (nonatomic,strong) NSURLSessionDownloadTask *task;
2.创建一个任务配置对象
在viewDidLoad 中写入一下代码
NSURLSessionConfiguration *configer = [NSURLSessionConfiguration defaultSessionConfiguration]; NSURLSession *session = [NSURLSession sessionWithConfiguration:configer delegate:self delegateQueue:[NSOperationQueue mainQueue]]; //这里设置代理了,所以需要去遵守两个协议 NSURLSessionDataDelegate,NSURLSessionDelegate NSURL *url = [NSURL URLWithString:@"http://uploads.mp3songurls.com/2930.mp3"]; //创建下载任务 self.task = [session downloadTaskWithURL:url];
3.下载过程中需要实现代理的方法
#pragma mark 每下载完一部分 就会调用该方法 - (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didWriteData:(int64_t)bytesWritten totalBytesWritten:(int64_t)totalBytesWritten totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite { //文 7fe0 件以字节为单位 //1.totalBytesExpectedToWrite 所需下载文件的总大小 //2.totalBytesWritten 已经下载好部分的大小 //3.bytesWritten 当前(本次)下载文件的大小 self.progressView.progress = 1.0f * totalBytesWritten/totalBytesExpectedToWrite; NSLog(@"%.2f",self.progressView.progress); }
4.下载完成调用的方法
#pragma mark 下载完成的代理方法 - (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location { //打印一下沙盒地址,去沙盒里面查看下载好的文件 NSLog(@"%@",NSHomeDirectory()); //创建下载文件保存的路径,一般大文件都会保存在cache文件下 NSString *cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject]; cachePath = [cachePath stringByAppendingPathComponent:@"111.mp3"]; NSFileManager *manager = [NSFileManager defaultManager]; //将下载好的文件移动到cache文件夹下,因为下载的文件,默认是在tmp目录下,这个目录最大的特点就是,一段时间之后,系统将对该文件下的文件做一个清理的操作,这是自动执行的 [manager moveItemAtPath:location.path toPath:cachePath error:nil]; }
5.开始下载的方法
#pragma mark 开始下载 - (IBAction)startDownloadDidClickedAction:(id)sender { [self.task resume]; }
6.暂停下载
#pragma mark 暂停下载 - (IBAction)stopButtonDIdClickedAction:(id)sender { [self.task suspend]; }
这只是做了个小小的介绍,希望对有需要的童鞋有帮助。。。。
相关文章推荐
- iOS-自定义图片大小
- ios卡牌游戏项目源码
- 蜂窝教育iOS培训:认真对待每位学员
- IOS tableview
- openstack 中 启动虚拟机出现MP-BIOS bug:8254 timer not connected to IO-APIC
- iOS开发(OC)中的命名规范
- 【iOS】自定义TabBarController
- IOS设计模式-组合设计模式
- iOS GCD使用指南
- IOS 图片点击放大不失真
- IOS 支付宝移动支付接口集成问题
- iOS开发系列--音频播放、录音、视频播放、拍照、视频录制
- 此证书的签发者无效Missing iOS Distribution signing identity问题解决
- 不让苹果开发者账号折磨我
- iOS制作自己的静态库(即.a文件)
- ios 粒子开发
- IOS 相册高清图片加载
- ios autolayout代码布局
- iOS CAEmitterLayer 实现粒子效果
- iOS高效的设置圆角效果