基于AFNetworking的iOS文件下载框架
2016-06-28 本文已影响2006人
feae4ff3b06a
接着上一篇 简单易用的iOS数据库操作框架 文章,这里简单介绍下基于 AFNetworking 的iOS文件下载框架,源码请点击这里 JCDownloader。
这套框架目前支持以下下载操作:
- 单个文件的下载、暂停、删除等操作。
- 通过groupId操作文件下载列表。
- 支持断点下载。
单个文件下载操作
JCDownloadItem *downloadItem = [[JCDownloadItem alloc] init];
downloadItem.downloadUrl = @"download url";
downloadItem.downloadFilePath = @"download file path";
self.operation = [JCDownloadOperation operationWithItem:downloadItem];
[self.operation startWithProgressBlock:^(NSProgress *progress) {
//update progress
} completionBlock:^(NSURL *filePath, NSError *error) {
//download operation completion, do something
}];
[self.operation resetProgressBlock:^(NSProgress *progress) {
//update progress
} completionBlock:^(NSURL *filePath, NSError *error) {
//download operation completion, do something
}];
[self.operation pauseDownload];
[self.operation removeDownload];
文件列表下载操作
extern NSString *const JCTImageDownloadGroupId;
NSMutableArray *downloadList = [NSMutableArray array];
for (NSInteger index = 0; index < [self urlList].count; index++) {
JCTImageDownloadItem *item = [[JCTImageDownloadItem alloc] init];
item.groupId = JCTImageDownloadGroupId;
item.downloadUrl = [self urlList][index];
item.downloadFilePath = [JCDownloadUtilities filePathWithFileName:[item.downloadUrl lastPathComponent] folderName:@"downloadImages"];
JCDownloadOperation *operation = [JCDownloadOperation operationWithItem:item];
[downloadList addObject:operation];
}
[[JCDownloadQueue sharedQueue] startDownloadList:downloadList];
[[JCDownloadQueue sharedQueue] startDownloadsWithGroupId:JCTImageDownloadGroupId];
[[JCDownloadQueue sharedQueue] pauseDownloadsWithGroupId:JCTImageDownloadGroupId];
[[JCDownloadQueue sharedQueue] removeDownloadsWithGroupId:JCTImageDownloadGroupId];
接收文件下载通知
// 文件下载唯一标识关键字,值为NSString对象
FOUNDATION_EXPORT NSString *const JCDownloadIdKey;
// 文件下载进度通知
FOUNDATION_EXPORT NSString *const JCDownloadProgressNotification;
// 文件下载进度关键字,值为NSProgress对象
FOUNDATION_EXPORT NSString *const JCDownloadProgressKey;
// 文件下载操作完成通知
FOUNDATION_EXPORT NSString *const JCDownloadCompletionNotification;
// 文件下载完成保存路径关键字,值为NSURL对象
FOUNDATION_EXPORT NSString *const JCDownloadCompletionFilePathKey;
// 文件下载出错关键字,值为NSError对象
FOUNDATION_EXPORT NSString *const JCDownloadCompletionErrorKey;
文件下载状态
下载状态.png目前这个下载框架还有一定的业务耦合性,下载完成的操作依旧保存在下载队列里,仅为了方便UI显示下载完成的数据。以后可以将这部分功能解耦,把它交给数据库来处理。