如果你正在为 iOS 7+ 开发,请考虑使用 TCBlobDownloadSwift。
然而,TCBlobDownload 仍维护相关,适用于 iOS 5+ 的项目。
TCBlobDownload 用 NSOperations 在后台线程中使用 NSURLConnection 下载大文件(通常是视频、音乐... 好吧:BLOBs)。
测试了从约 150MB 到约 1.2GB 的文件,主要是视频。
我实现了 TCBlobDownloader,它扩展了 NSOperation,并使用 TCBlobDownloadManager 来执行它。您可以设置代理或为每个下载使用代码块来更新您的视图等...
需要 iOS 5.0 或更高版本 和 ARC。
在 Cocoadocs 上浏览文档,或者通过 下载 docset 并将其放入 ~/Library/Developer/Shared/Documentation/DocSets/
直接添加到 Xcode 中。(或者使用 Dash)
TCBlobDownload.xcodeproj
从 Finder 拖放到你打开的项目中。TCBlobDownload
。然后,点击 与二进制链接 并添加 libTCBlobDownload.a
(如果它是红色的,不用担心)。YES
并将 $(PROJECT_TEMP_DIR)/../UninstalledProducts/include
添加到 "用户头文件搜索路径"。-ObjC
#import <TCBlobDownload/TCBlobDownload.h>
要立即在默认的 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 数据存储指南**。
你可以设置一个代理,实现这些可选方法,如果有代理是你的首选
- (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
{
}
如果下载已停止且本地文件尚未删除,当你重新启动到相同本地路径的下载时,下载将根据 HTTP Range 头部(14.35)从停止的地方开始。
你还可以使用来自 TCBlobDownloader
的 addDependentDownload:
方法在你的下载中设置依赖项。
有关更多详细信息,请参阅文档。
如果你有任何想法或请求,请建议!