• 使用NSURLSession
  • 写在前面
  • NSURLSession基本使用
  • NSURELSession代理方式下载
    • NSURLSession常用代理方法
  • NSURLSession断点下载

使用NSURLSession

写在前面

NSURLSession是iOS7之后推出的网络操作工具类。主要目的是替换NSURLConnection。

NSURLSession基本使用

    //1. 获取NSURLSession对象NSURLSession *sesion = [NSURLSession sharedSession];//2. 创建URLNSURL *url = [NSURL URLWithString:@""];//3. 创建任务NSURLSessionDownloadTask *task = [sesion downloadTaskWithURL:url completionHandler:^(NSURL *location, NSURLResponse *response, NSError *error) {// 1. location->下载完后临时文件的位置,如果不进行任何操作,程序结束后会删除此下载的文件//将文件剪切到缓冲文件NSString *caches = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];NSString *file = [caches stringByAppendingPathComponent:response.suggestedFilename];NSFileManager *manager = [NSFileManager defaultManager];[manager moveItemAtPath:location.path toPath:file error:nil];NSLog(@"下载完毕%@", response);}];//4. 开始任务[task resume];

NSURELSession代理方式下载

//1. 创建NSURLSessionConfiguration对象NSURLSessionConfiguration *cfg = [NSURLSessionConfiguration defaultSessionConfiguration];//2. 创建NSURLSession对象并设置代理<NSURLSessionDownloadDelegate>NSURLSession *session = [NSURLSession sessionWithConfiguration:cfg  delegate:self delegateQueue:[NSOperationQueue mainQueue]];//3. 创建URLNSURL *url = [NSURL URLWithString:@""];//4. 创建下载任务NSURLSessionDownloadTask *task = [session downloadTaskWithURL:url];
/*//注意:如果给下载任务设置了completionHandler这个block,也实现了代理方法,优先使用代理方法NSURLSessionDownloadTask *task = [session downloadTaskWithURL:url completionHandler:^(NSURL *location, NSURLResponse *response, NSError *error) {}];
*///5. 实现下代理方法

NSURLSession常用代理方法

/***  完成下载**  @param session*  @param downloadTask*  @param location    下载文件的临时路径*/
- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location{//建议文件名// downloadTask.response.suggestedFilename;
}
/***  恢复下载**  @param session*  @param downloadTask*  @param fileOffset*  @param expectedTotalBytes*/
-(void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didResumeAtOffset:(int64_t)fileOffset expectedTotalBytes:(int64_t)expectedTotalBytes{}/***  下载完一部分时就会调用**  @param session*  @param downloadTask*  @param bytesWritten              本次调用写了多少*  @param totalBytesWritten         已经写了多少*  @param totalBytesExpectedToWrite 文件总大小*/
-(void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didWriteData:(int64_t)bytesWritten totalBytesWritten:(int64_t)totalBytesWritten totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite{//下载进度//(double)totalBytesWritten / totalBytesExpectedToWrite;
}

NSURLSession断点下载

//下载任务对象
@property (nonatomic, strong)NSURLSessionDownloadTask *task;
//暂停下载后返回的数据信息,包含了下载的位置,恢复下载时将此信息传递过去就会接着下载
@property (nonatomic, strong)NSData *resumeData;
//NSURLSession对象
@property (nonatomic, strong)NSURLSession *session;
/***  暂停/开始按钮响应事件**  @param sender*/
- (void)btnAction:(UIButton*)sender{if (self.task == nil) { //如果下载任务为空,开始下载或者恢复下载,否则暂停下载if(self.resumeData){//如果暂停后返回的信息为空,开始下载,否则恢复下载[self resume];}else{[self start];}}else{[self pause]; //zt}
}- (void)resume{//恢复下载self.task = [self.sessin downloadTaskWithResumeData:self.resumeData];[self.task resume];self.resumeData = nil;
}

iOS文件下载(二)相关推荐

  1. iOS 生成二维码/条形码

    级别:★★☆☆☆ 标签:「iOS CIFilter」「CIQRCodeGenerator」「CICode128BarcodeGenerator」「二维码加logo」 作者: Xs·H 审校: QiSh ...

  2. iOS 花式二维码生成和二维码识别

    iOS 原生的二维码识别非常之棒,反正比 ZXing 和 ZBar 效果都好些,所以以后打算尽量用原生的二维码识别,然后最近把原生的二维码生成也顺便做了一遍,并且在原有基础上加了一些样式参数,封了一个 ...

  3. iOS原生二维码扫描(一)

    首先搭建一个最初步的能识别出二维码信息的最基本框架: @interface ScanCodeViewController ()<AVCaptureMetadataOutputObjectsDel ...

  4. iOS上二维码和一维码识别系列一

    这段时间在做iOS上二维码和一维码的识别 其间遇到问题无数, 特此总结下来, 希望能给后来的同学供参考 在iOS上, 做二维码识别, 首先在网上查找资料, 查找到ZBar和ZXing这两个开源的识别程 ...

  5. iOS开发-二维码扫描和应用跳转

    iOS开发-二维码扫描和应用跳转   序言 前面我们已经调到过怎么制作二维码,在我们能够生成二维码之后,如何对二维码进行扫描呢? 在iOS7之前,大部分应用中使用的二维码扫描是第三方的扫描框架,例如Z ...

  6. ios微信二维码无法长按识别的若干解决方案

    ios微信二维码无法长按识别的若干解决方案 参考文章: (1)ios微信二维码无法长按识别的若干解决方案 (2)https://www.cnblogs.com/is17/p/5777373.html ...

  7. iOS开发—二维码扫描-郭宏志-专题视频课程

    iOS开发-二维码扫描-3869人已学习 课程介绍         本课程由扣丁学堂教学总监郭宏志老师讲授,主要讲解了iOS开发专题中的二维码扫描这一专题,内容包含了二维码扫描中的全部知识,让学员更多 ...

  8. Firefox ios 火狐浏览器iOS版本二次开发(二)

    Firefox ios 火狐浏览器iOS版本二次开发(二) 编译 Firefox ios源代码下载地址: Firefox CSDN下载地址 Firefox ios版本采用的是swift语言来进行开发的 ...

  9. iOS 原生二维码扫描和生成

    代码地址如下: http://www.demodashi.com/demo/12551.html 一.效果预览: 功能描述:WSLNativeScanTool是在利用原生API的条件下封装的二维码扫描 ...

最新文章

  1. 集成服务入门(实验9)日志记录和邮件通知
  2. 03系统多界面_【part two】操作说明——系统管理、公司管理、客户管理
  3. android 7调用摄像头,Android调用摄像头拍照(兼容7.0)
  4. opencv 图像访问索引
  5. chinaunix-索引资料
  6. query string parameter前端怎么传参_Substrate 前端开发-1: 用 Polkadot-JS API 轻松搭建前端
  7. JavaScript浏览器对象(BOM)中有关设备、浏览器屏幕高度和宽度的API介绍
  8. Atitit 软件与开发的未来趋势 attilax总结 1.1. Sdx软件重构世界 软件定义未来 1 1.2. 《软件和信息技术服务业发展规划(2016-2020年)》( 2 1.3. Iot物联
  9. python模拟鼠标键盘操作_Python-模拟鼠标键盘动作
  10. 完整的连接器设计手册_广西直销施耐德漏电断路器选型手册
  11. 同花顺 行情服务器系统,[分享]完美运行同花顺,Linux下的股友有福了
  12. 运放虚短虚断的成立条件
  13. 高铁检测试验软件,高铁规划要点及测试情况分析
  14. JAVA实现对PDF文件加密、解密、暴力破解密码功能
  15. 张柏芝谢霆锋喜得贵子
  16. Ubuntu 开机未登录用户前自动连接wifi
  17. 从你的全世界路过(张嘉佳)
  18. 【Godot】加载文件数据
  19. 跟着团子学SAP PS:利用项目统计指标(SKF)提升项目成本核算的精准性
  20. 简述java异常机制处理,简述Java中异常处理的机制

热门文章

  1. oracle ebs 采购员表,oracle EBS采购订单各表作用分析
  2. 通信电子电路(2)---使用multisim分析电路小技巧、晶体管等效电路
  3. 在线等价类与离线等价类(概念)
  4. 算法训练 奥运会开幕式 Java
  5. 精品基于Uniapp+SSM实现的Android的校园新闻管理系统实现的App
  6. 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第51讲:PHP中smarty模板技术介绍
  7. COMP9021笔记
  8. FFmpeg引入x264扩展
  9. 准确率、召回率、F-measure值
  10. DDR1.LPDDR4 DQS VT drift理解