A CKDownloadManager
A 支持断点续传的下载管理器。只需实现代理即可使用,简单易用。
您可以在项目中使用 CocoaPods。
pod 'CKDownloadManager',:git=>"https://github.com/kaich/CKDownloadManager.git"
CKDownloadManager 是一个下载框架。与其他下载框架相比,它具有更多功能。以下是特性:
下载管理器必须包含基础功能,例如开始、暂停、恢复和删除。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
。使用 filterParams
或 filterConditionBlock
来设置筛选条件。例如,您不想显示 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
是一个包含文件大小、文件内容和可用空间验证的验证器。如果您需要哪种验证,只需将相关属性设置为“是”即可。
当您想实现文件内容验证时,必须在您的服务器中实现 generateValidateCodeWithURL
方法。
如果想要自动重试,您需要将值设置到 retryController
。例如
CKDownloadRetryController * retryController = [[CKDownloadRetryController alloc] init];
retryController.retryMaxCount=20;
[[CKDownloadManager sharedInstance].retryController = retryController;
它将会重试。当多次尝试启动下载失败时,任务将移动到任务列表底部,下一个将自动开始下载
您的项目中使用哪种网络?ASIHttpRequest 或 AFNetworking。您可以使用 CKDownloadManager 与 ASIHttpRequest 或 AFNetworking。当然,您可以使用任何其他网络库。请实现 CKHTTPRequestProtocal
和 CKHTTPRequestQueueProtocal
。在我实现的库中,我使用了 ASIHttpRequest。这些是 ASIHTTPRequest+Download
和 ASINetworkQueue+Download
。您可以使用如下方式
[[CKDownloadManager sharedInstance] setHTTPRequestClass:[ASIHTTPRequest class];
[[CKDownloadManager sharedInstance] setHTTPRequestQueueClass:[ASINetworkQueue class]];
您可以通过创建一个继承 CKDownloadBaseModel
的类或遵守 CKDownloadModelProtocal
的类来实现。您可以在您的类中添加自己的属性。有一个默认的 'CKDownloadFileModel',它是从 CKDownloadBaseModel
继承的。详细信息请参阅 LKDBHelper。将来将支持更多的数据库库。
性能对于下载非常重要。CKDownloadManager 具有卓越的性能。我已经使用了多个线程和同步。还有许多其他策略可以提升性能。
kaich, [email protected]
CKDownloadManager 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。