CKDownloadManager 2.0.0

CKDownloadManager 2.0.0

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最后发布2015 年 9 月

cheng kai 维护。



  • 作者
  • kaich

A CKDownloadManager

A 支持断点续传的下载管理器。只需实现代理即可使用,简单易用。

安装

您可以在项目中使用 CocoaPods

pod 'CKDownloadManager',:git=>"https://github.com/kaich/CKDownloadManager.git"
特性

CKDownloadManager 是一个下载框架。与其他下载框架相比,它具有更多功能。以下是特性:

  • 下载基础功能
  • 多任务下载
  • 下载任务筛选(例如:您下载包含封面的 PDF,但您只想显示 PDF 下载进度。因此,您可以使用筛选来只显示 PDF 进度);
  • 下载任务依赖(例如:在开始 PDF 下载之前,始终先完成封面下载)
  • 多验证下载
  • 下载超时重试
  • 使用多个网络库进行下载
  • 单例或多下载管理器
  • 下载扩展功能
  • 自定义任务信息
  • 卓越的性能
下载基础功能

下载管理器必须包含基础功能,例如开始、暂停、恢复和删除。CKDownloadManager 也包含这些。例如,以下是这样启动一个简单下载任务的方式:

NSString * downloadUrl =@"http://7xl9a5.com2.z0.glb.qiniucdn.com/%E4%B8%AD%E7%8F%AD.mp4?attname=";
CKDownloadBaseModel * model = [[CKDownloadBaseModel alloc] init];
model.URLString = downloadUrl;
[[CKDownloadManager sharedInstance] startDownloadWithURL:URL(downloadUrl) entity: model];

如果您想暂停它,可以调用以下 pauseWithURL

[[CKDownloadManager sharedInstance] pauseWithURL:URL(downloadUrl)];

当然您也可以恢复,如下所示:

[[CKDownloadManager sharedInstance] resumWithURL:URL(downloadUrl)];  

删除任务如下所示:

[[CKDownloadManager sharedInstance] deleteWithURL:URL(downloadUrl)];  

删除所有正在下载的任务如下所示:

[[CKDownloadManager sharedInstance] deleteAllWithState:YES];

如果您想删除所有完全下载的任务,只需将参数更改为 NO。删除所有任务,您可以这样做。

[[CKDownloadManager sharedInstance] deleteAllWithState:YES];
[[CKDownloadManager sharedInstance] deleteAllWithState:NO];
多任务下载

您可以使用 CKDownloadManager 下载多种任务。您有书籍和视频。如果您想下载这两者,可以简单地这样做。您只需通过模型区分它们。

下载任务筛选

您有书籍和视频。您 只想显示视频在您表格视图。您可以使用 CKDownloadFilter。使用 filterParamsfilterConditionBlock 来设置筛选条件。例如,您不想显示 png 和 jpg、plist、jpeg 任务。

filter.filterParams=@"NOT(URLString  CONTAINS[cd] 'plist' OR URLString  CONTAINS[cd] 'jpg' OR URLString  CONTAINS[cd] 'png' OR URLString  CONTAINS[cd] 'jpeg')";

当然您也可以使用 filterConditionBlock 来完成它。

下载任务依赖

如果一项任务完全依赖于另一项任务。我的下载管理器也可以满足您。

-(void) startDownloadWithURL:(NSURL *)URL entity:(id<CKDownloadModelProtocal>)entity dependencies:(NSDictionary *) dependencyDictionary;
多验证下载

CKDownloadFileValidator 是一个包含文件大小、文件内容和可用空间验证的验证器。如果您需要哪种验证,只需将相关属性设置为“是”即可。

  • isValidateFileSize
  • isValidateFileContent
  • isValidateFreeSpace

当您想实现文件内容验证时,必须在您的服务器中实现 generateValidateCodeWithURL 方法。

下载超时重试

如果想要自动重试,您需要将值设置到 retryController。例如

CKDownloadRetryController * retryController = [[CKDownloadRetryController alloc] init];
retryController.retryMaxCount=20;
[[CKDownloadManager sharedInstance].retryController = retryController;

它将会重试。当多次尝试启动下载失败时,任务将移动到任务列表底部,下一个将自动开始下载

使用多网络库下载

您的项目中使用哪种网络?ASIHttpRequestAFNetworking。您可以使用 CKDownloadManager 与 ASIHttpRequest 或 AFNetworking。当然,您可以使用任何其他网络库。请实现 CKHTTPRequestProtocalCKHTTPRequestQueueProtocal。在我实现的库中,我使用了 ASIHttpRequest。这些是 ASIHTTPRequest+DownloadASINetworkQueue+Download。您可以使用如下方式

[[CKDownloadManager sharedInstance] setHTTPRequestClass:[ASIHTTPRequest class];
[[CKDownloadManager sharedInstance] setHTTPRequestQueueClass:[ASINetworkQueue class]];
自定义您自己的任务信息

您可以通过创建一个继承 CKDownloadBaseModel 的类或遵守 CKDownloadModelProtocal 的类来实现。您可以在您的类中添加自己的属性。有一个默认的 'CKDownloadFileModel',它是从 CKDownloadBaseModel 继承的。详细信息请参阅 LKDBHelper。将来将支持更多的数据库库。

卓越的性能

性能对于下载非常重要。CKDownloadManager 具有卓越的性能。我已经使用了多个线程和同步。还有许多其他策略可以提升性能。

作者

kaich, [email protected]

许可证

CKDownloadManager 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。