NSURLSession断点续传
来源:互联网 发布:java 100以内的质数 编辑:程序博客网 时间:2024/05/22 16:01
.h文件
#import <Foundation/Foundation.h>@interface NCNetWorkManager : NSObject <NSURLSessionDelegate, NSURLSessionDownloadDelegate, NSURLSessionDataDelegate>@property (nonatomic, strong) NSURLSession * _Nullable session;@property (nonatomic, strong) NSURLSessionDownloadTask * _Nullable downloadTask;@property (nonatomic, strong) NSData * _Nullable resumeData;/* * 当前下载进度 */@property (nonatomic, assign) float rateProgress;/** * 断点续传下载-开始下载 */- (void)downloadStart:(nullable NSString *)urlString;/** * 断点续传下载-暂停下载 */- (void)downloadPause;/** * 断点续传下载-恢复下载 */- (void)downloadResume;@end
.m文件
开始下载
- (void)downloadStart:(NSString *)urlString{ NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; self.session = [NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:[NSOperationQueue mainQueue]]; self.downloadTask = [self.session downloadTaskWithURL:[NSURL URLWithString:urlString]]; [self.downloadTask resume];}
暂停下载
- (void)downloadPause{ __weak typeof(self) weakSelf = self; [self.downloadTask cancelByProducingResumeData:^(NSData * _Nullable resumeData) { weakSelf.resumeData = resumeData; weakSelf.downloadTask = nil; }];}
继续下载
- (void)downloadResume{ self.downloadTask = [self.session downloadTaskWithResumeData:self.resumeData]; [self.downloadTask resume]; self.resumeData = nil;}
下载完成后(代理方法)
- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTaskdidFinishDownloadingToURL:(NSURL *)location{ NSString *caches = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject]; NSString *path = [caches stringByAppendingPathComponent:downloadTask.response.suggestedFilename]; NSFileManager *fileManager = [NSFileManager defaultManager]; [fileManager moveItemAtPath:location.path toPath:path error:nil];}
获得下载进度(代理方法)
- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didWriteData:(int64_t)bytesWritten totalBytesWritten:(int64_t)totalBytesWrittentotalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite{ NSLog(@"获得下载进度--%@", [NSThread currentThread]); self.rateProgress = totalBytesExpectedToWrite/totalBytesWritten;}
下载任务已恢复下载(代理方法)
如果一个可恢复的下载任务被取消或失败,你可以请求一个resumeData对象提供足够的信息来重新启动下载. 然后你就可以调用
downloadTaskWithResumeData:
或downloadTaskWithResumeData:completionHandler:
方法
当你调用这些方法时,你将得到一个新的下载任务。一旦恢复该任务,会话将调用其委托的URLSession:downloadTask:didResumeAtOffset:expectedTotalBytes
方法, 这个新任务恢复下载.
- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didResumeAtOffset:(int64_t)fileOffsetexpectedTotalBytes:(int64_t)expectedTotalBytes{}
阅读全文
0 0
- NSURLSession断点续传
- NSURLSession断点续传
- NSURLSession断点续传
- NSURLSession下载和断点续传
- 95 NSURLSession 断点续传
- iOS -- 断点续传之 NSURLSession
- NSURLSession实现断点续传
- NSURLSession下载(断点续传)
- NSURLSession下载之断点续传
- 网络:NSURLSession 的断点续传
- NSURLSession实现断点续传
- iOS - NSURLSession实现断点续传下载
- NSURLSession下载文件—断点续传
- iOS 使用NSURLSession进行断点续传
- NSURLSession下载文件—断点续传
- iOS开发 - NSURLSession实现断点续传下载
- ios断点续传:NSURLSession和NSURLSessionDataTask实现
- NSURLSession无法实现断点续传下载的问题解决
- G
- 1017. A除以B (20)
- linux命令发送http的get或post请求(curl和wget两种方法)
- poj2091-Zing Zhu's Oyster Farm
- 我的第一篇博文
- NSURLSession断点续传
- 关于 Spring Bean 生命周期
- 实习点滴(7)--《Investigating LSTM for Punctuation Prediction》论文笔记
- 2017 杭电多校联赛 1002 Balala Power!(数字替换字母)HDU 6034
- HDU1163 Eddy's digital Roots
- C++中不能被重载的运算符
- 资料.地址
- JavaScript数据类型
- Linux_入门之网络管理及DHCP服务器搭建