基于AFNetworking的iOS文件下载框架

接着上一篇 简单易用的iOS数据库操作框架 文章,这里简单介绍下基于 AFNetworking 的iOS文件下载框架--JCDownloader。

这套框架目前支持以下下载操作:

  1. 单个文件的下载、暂停、删除等操作。
  2. 通过groupId操作文件下载列表。
  3. 支持断点下载。
单个文件下载操作
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;
文件下载状态
基于AFNetworking的iOS文件下载框架_第1张图片
下载状态.png

目前这个下载框架还有一定的业务耦合性,下载完成的操作依旧保存在下载队列里,仅为了方便UI显示下载完成的数据。以后可以将这部分功能解耦,把它交给数据库来处理。

你可能感兴趣的:(基于AFNetworking的iOS文件下载框架)