TCBlobDownload 2.1.1

TCBlobDownload 2.1.1

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

Thibault Charbonnier 维护。



  • Thibault Charbonnier


如果你正在为 iOS 7+ 开发,请考虑使用 TCBlobDownloadSwift

然而,TCBlobDownload 仍维护相关,适用于 iOS 5+ 的项目。


TCBlobDownload 用 NSOperations 在后台线程中使用 NSURLConnection 下载大文件(通常是视频、音乐... 好吧:BLOBs)。

测试了从约 150MB 到约 1.2GB 的文件,主要是视频。

我实现了 TCBlobDownloader,它扩展了 NSOperation,并使用 TCBlobDownloadManager 来执行它。您可以设置代理或为每个下载使用代码块来更新您的视图等...

需要 iOS 5.0 或更高版本 和 ARC。

特性

  1. 在后台线程中下载文件
  2. 代码块或代理样式
  3. 暂停和恢复下载
  4. 设置最大并发下载数
  5. 自定义下载路径
  6. 下载速度和剩余时间
  7. 下载取消
  8. 下载依赖

文档 :books:

Cocoadocs 上浏览文档,或者通过 下载 docset 并将其放入 ~/Library/Developer/Shared/Documentation/DocSets/ 直接添加到 Xcode 中。(或者使用 Dash

安装

作为静态库导入

  1. TCBlobDownload.xcodeproj 从 Finder 拖放到你打开的项目中。
  2. 项目的 Target -> 构建阶段 -> 目标依赖 -> 添加 TCBlobDownload。然后,点击 与二进制链接 并添加 libTCBlobDownload.a(如果它是红色的,不用担心)。
  3. 转到 构建设置,将 "始终搜索用户路径" 切换为 YES 并将 $(PROJECT_TEMP_DIR)/../UninstalledProducts/include 添加到 "用户头文件搜索路径"。
  4. 项目的 Target -> 构建设置 -> 其他链接器标志 -> 添加 -ObjC
  5. 导入库。(如果担心没有自动完成,不用担心)
#import <TCBlobDownload/TCBlobDownload.h>

示例 :eyeglasses:

1. 区块

要立即在默认的 TCBlobDownloadManager 目录下开始下载(默认为 tmp/

TCBlobDownloadManager *sharedManager = [TCBlobDownloadManager sharedInstance];

TCBlobDownloader *downloader = [sharedManager startDownloadWithURL:@"http://give.me/abigfile.avi"
                downloadPath:nil
               firstResponse:^(NSURLResponse *response) {

               }
               progress:^(uint64_t receivedLength, uint64_t totalLength, NSInteger remainingTime, float progress) {
                 // downloader.remainingTime
                 // downloader.speedRate
               }
               error:^(NSError *error) {

               }
               complete:^(BOOL downloadFinished, NSString *pathToFile) {

               }];

如果你设置了自定义路径

NSString *customPath = [NSTemporaryDirectory() stringByAppendingPathComponent:@"My/Custom/Path/"];

TCBlobDownloader *downloader = [sharedManager startDownloadWithURL:@"http://give.me/abigfile.avi"
                                                        customPath:customPath // here we set the path
                                                       andDelegate:nil];

将根据需要创建指定的路径,并在 Path/ 目录下下载文件。请注意,在下载过程中,你无法控制文件名,具体原因请参阅文档。**请记住,你应该遵循iOS 数据存储指南**。

2. 代理

你可以设置一个代理,实现这些可选方法,如果有代理是你的首选

- (void)download:(TCBlobDownloader *)download didReceiveFirstResponse:(NSURLResponse *)response
{

}

- (void)download:(TCBlobDownloader *)download didReceiveData:(uint64_t)received onTotal:(uint64_t)total
{
  // download.remainingTime
  // download.speedRate
}

- (void)download:(TCBlobDownloader *)download didStopWithError:(NSError *)error
{

}

- (void)download:(TCBlobDownloader *)download didFinishWithSucces:(BOOL)downloadFinished atPath:(NSString *)pathToFile
{

}

3. 其他功能

  • 如果下载已停止且本地文件尚未删除,当你重新启动到相同本地路径的下载时,下载将根据 HTTP Range 头部(14.35)从停止的地方开始。

  • 你还可以使用来自 TCBlobDownloaderaddDependentDownload: 方法在你的下载中设置依赖项。

有关更多详细信息,请参阅文档

路线图 :rocket:

如果你有任何想法或请求,请建议!:smiley:

  • 多段下载
  • 文档版本的控制台 XML 资源