95 NSURLSession 断点续传
来源:互联网 发布:天金加银软件下载 编辑:程序博客网 时间:2024/05/01 18:19
NSURLSession 断点续传:@interface HMViewController () <NSURLSessionDownloadDelegate, NSURLSessionDataDelegate>@property (weak, nonatomic) IBOutlet UIProgressView *progressView;- (IBAction)download:(UIButton *)sender;@property (nonatomic, strong) NSURLSessionDownloadTask *task;@property (nonatomic, strong) NSData *resumeData;@property (nonatomic, strong) NSURLSession *session;@end@implementation HMViewController- (NSURLSession *)session{ if (!_session) { // 获得session NSURLSessionConfiguration *cfg = [NSURLSessionConfiguration defaultSessionConfiguration]; self.session = [NSURLSession sessionWithConfiguration:cfg delegate:self delegateQueue:[NSOperationQueue mainQueue]]; } return _session;}- (void)viewDidLoad{ [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib.}- (IBAction)download:(UIButton *)sender { // 按钮状态取反 sender.selected = !sender.isSelected; if (self.task == nil) { // 开始(继续)下载 if (self.resumeData) { // 恢复 [self resume]; } else { // 开始 [self start]; } } else { // 暂停 [self pause]; }}/** * 从零开始 */- (void)start{ // 1.创建一个下载任务 NSURL *url = [NSURL URLWithString:@"http://192.168.15.172:8080/MJServer/resources/videos/minion_01.mp4"]; self.task = [self.session downloadTaskWithURL:url]; // 2.开始任务 [self.task resume];}/** * 恢复(继续) */- (void)resume{ // 传入上次暂停下载返回的数据,就可以恢复下载 self.task = [self.session downloadTaskWithResumeData:self.resumeData]; // 开始任务 [self.task resume]; // 清空 self.resumeData = nil;}/** * 暂停 */- (void)pause{ __weak typeof(self) vc = self; [self.task cancelByProducingResumeData:^(NSData *resumeData) { // resumeData : 包含了继续下载的开始位置\下载的url vc.resumeData = resumeData; vc.task = nil; }];}#pragma mark - NSURLSessionDownloadDelegate- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTaskdidFinishDownloadingToURL:(NSURL *)location{ NSString *caches = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject]; // response.suggestedFilename : 建议使用的文件名,一般跟服务器端的文件名一致 NSString *file = [caches stringByAppendingPathComponent:downloadTask.response.suggestedFilename]; // 将临时文件剪切或者复制Caches文件夹 NSFileManager *mgr = [NSFileManager defaultManager]; // AtPath : 剪切前的文件路径 // ToPath : 剪切后的文件路径 [mgr moveItemAtPath:location.path toPath:file error:nil];}- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didWriteData:(int64_t)bytesWritten totalBytesWritten:(int64_t)totalBytesWrittentotalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite{ NSLog(@"获得下载进度--%@", [NSThread currentThread]); // 获得下载进度 self.progressView.progress = (double)totalBytesWritten / totalBytesExpectedToWrite;}- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didResumeAtOffset:(int64_t)fileOffsetexpectedTotalBytes:(int64_t)expectedTotalBytes{}
0 0
- 95 NSURLSession 断点续传
- NSURLSession断点续传
- NSURLSession断点续传
- NSURLSession断点续传
- NSURLSession下载和断点续传
- iOS -- 断点续传之 NSURLSession
- NSURLSession实现断点续传
- NSURLSession下载(断点续传)
- NSURLSession下载之断点续传
- 网络:NSURLSession 的断点续传
- NSURLSession实现断点续传
- iOS - NSURLSession实现断点续传下载
- NSURLSession下载文件—断点续传
- iOS 使用NSURLSession进行断点续传
- NSURLSession下载文件—断点续传
- iOS开发 - NSURLSession实现断点续传下载
- ios断点续传:NSURLSession和NSURLSessionDataTask实现
- NSURLSession无法实现断点续传下载的问题解决
- JAVA中StringBuffer类常用方法详解
- java算法之一冒泡排序(交换排序)
- iOS应用内部切换语言,不跟随系统
- Android项目Ant命令与问题记录
- 基于XMPP协议的即时通讯教程附Demo
- 95 NSURLSession 断点续传
- PHP sprintf函数
- C的数组
- Enocean Serial Protocol 3 常用测试命令
- Android Toast连续点击只弹一次
- <二叉树 前中后 层序 非递归遍历 c语言实现>
- 注意include .h 文件的使用
- 高性能netty
- android 自动输入完成提示 自定义适配器适用于自定义分隔符带中文的提示