AFNetworking的后台下载

在默认情况(不做特别设置)下,AFNetworking并未启用backgroundSession,是不支持后台下载的。
NSURLSession对后台下载的支持主要通过 backgroundSessionConfiguration/backgroundSessionConfigurationWithIdentifier 类型的session来支持

1⃣️创建sessionManager来管理,通过Configuration 配置

NSURLSessionConfiguration *cfg= [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:@"downInBackground"];
    AFHTTPSessionManager *manager   = [[AFHTTPSessionManager alloc]initWithSessionConfiguration:cfg];

2⃣️添加下载任务
3⃣️实现相关协议
NSURLSessionDownloadTaskDelegate协议有如下3个方法:

//这个方法在下载过程中反复调用,用于获知下载的状态 
- (void)URLSession:(NSURLSession )session downloadTask:(NSURLSessionDownloadTask )downloadTask didWriteData:(int64_t)bytesWritten totalBytesWritten:(int64_t)totalBytesWritten totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite 
//这个方法在下载完成之后调用,用于获取下载后的文件 
- (void)URLSession:(NSURLSession )session downloadTask:(NSURLSessionDownloadTask )downloadTask didFinishDownloadingToURL:(NSURL *)location 
//这个方法在暂停后重新开始下载时调用,一般不操作这个代理 
- (void)URLSession:(NSURLSession )session downloadTask:(NSURLSessionDownloadTask )downloadTask didResumeAtOffset:(int64_t)fileOffset expectedTotalBytes:(int64_t)expectedTotalBytes

注意:backgroundSession可能更喜欢使用- setDownloadTaskDidFinishDownloadingBlock:来指定用于保存下载文件的URL,而不是使用destination block 。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容