NSURLSession下载(断点续传)
来源:互联网 发布:网络彩票何时开售 编辑:程序博客网 时间:2024/05/22 13:53
//// ViewController.m#import "ViewController.h"@interface ViewController ()<NSURLSessionDownloadDelegate>/**下载任务*/@property(nonatomic,strong)NSURLSessionDownloadTask *downloadTask;/**全局管理的会话*/@property(nonatomic,strong)NSURLSession *session;/**续传的数据*/@property(nonatomic,strong)NSData *resumeData;@end@implementation ViewController- (NSURLSession *)session{ if (_session == nil) { NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration]; _session = [NSURLSession sessionWithConfiguration:config delegate:self delegateQueue:nil]; } return _session;}/**继续*/- (IBAction)resume:(id)sender{ if (self.resumeData == nil) { NSLog(@"没有续传的数据"); return; } // 使用上一次的记录,新建一个下载任务 self.downloadTask = [self.session downloadTaskWithResumeData:self.resumeData]; // 一旦任务建立完成,之前的续传数据没有用,释放掉 self.resumeData = nil; [self.downloadTask resume];}/**暂停*/- (IBAction)pause:(id)sender{ NSLog(@"%s", __func__); [self.downloadTask cancelByProducingResumeData:^(NSData *resumeData) { NSLog(@"=----%tu", resumeData.length); // 保存起来暂停的时候的字节数 self.resumeData = resumeData; // 释放下载任务 self.downloadTask = nil; }];}- (IBAction)start { // 1. url NSString *urlStr = @"http://127.0.0.1/01-课程概述.mp4"; urlStr = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSURL *url = [NSURL URLWithString:urlStr]; // 2. 通过session对象 开始一个任务 self.downloadTask = [self.session downloadTaskWithURL:url]; // 继续 [self.downloadTask resume];}#pragma mark - NSURLSessionDownloadDelegate// 1. 下载完成被调用的方法 iOS 7 & iOS 8都必须实现- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location{ NSLog(@"下载完成.."); self.downloadTask = nil;}// 2. 下载进度变化的时候被调用的。 iOS 8可以不实现/** bytesWritten: 本次写入的字节数 totalBytesWritten:已经写入的字节数(目前下载的字节数) totalBytesExpectedToWrite: 总的下载字节数(文件的总大小) */- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didWriteData:(int64_t)bytesWritten totalBytesWritten:(int64_t)totalBytesWritten totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite{ float progress = (float)totalBytesWritten / totalBytesExpectedToWrite; NSLog(@"%f---%@", progress, [NSThread currentThread]);}// 3. 断点续传的时候,被调用的。一般什么都不用写 iOS 8可以不实现- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didResumeAtOffset:(int64_t)fileOffset expectedTotalBytes:(int64_t)expectedTotalBytes{ }@end
0 0
- NSURLSession下载和断点续传
- NSURLSession下载(断点续传)
- NSURLSession下载之断点续传
- iOS - NSURLSession实现断点续传下载
- NSURLSession下载文件—断点续传
- NSURLSession下载文件—断点续传
- iOS开发 - NSURLSession实现断点续传下载
- NSURLSession无法实现断点续传下载的问题解决
- NSURLSession下载的断点续传以及实…
- iOS NSURLSession后台下载和断点续传
- iOS开发下载、断点续传-NSURLConnection、NSURLSession
- NSURLSession断点续传
- NSURLSession断点续传
- NSURLSession断点续传
- ios断点续传:通过NSURLSession实现文件下载功能
- 关于NSURLSession在下载失败后的断点续传
- iOS NSURLSession后台下载多个任务,支持断点续传
- 从NSURLSession下载和断点续传到NSURLSession使用说明及后台工作流程分析
- 概率论--第一章
- MYsQL优化SQL
- Virginia 密码的Maple实现
- Android 仿网易新闻 ViewPager 实现图片自动轮播
- 如何选择 compileSdkVersion, minSdkVersion 和 targetSdkVersion
- NSURLSession下载(断点续传)
- 博客开篇
- 第16天
- Linux 内存管理知识学习总结
- leetcode之Remove Duplicates from Sorted List II
- 《访问Mat图像中每个像素的值》)
- 3172: [Tjoi2013]单词 fail树
- Property动画实例1
- ibm watson 论文