大神连接 包含离线下载功能
- viewDidLoad
- (void)viewDidLoad {
[super viewDidLoad];
_progressview = [[UIProgressView alloc] initWithProgressViewStyle:UIProgressViewStyleDefault];
_progressview.frame = CGRectMake(20.0f, 100.0f, 200.0f, 30.0f);
_progressview.trackTintColor = [UIColor grayColor];
_progressview.progressTintColor = [UIColor orangeColor];
[self.view addSubview:_progressview];
NSURL *url = [NSURL URLWithString:@"http://dldir1.qq.com/qqfile/QQforMac/QQ_V5.4.0.dmg"];
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:[NSOperationQueue mainQueue]];
NSURLSessionDownloadTask *downloadTask = [session downloadTaskWithURL:url];
[downloadTask resume];
}
- NSURLSessionDelegate
/**
* 文件下载完毕时调用
*/
- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask
didFinishDownloadingToURL:(NSURL *)location
{
// 文件将要移动到的指定目录
NSString *documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
// 新文件路径
NSString *newFilePath = [documentsPath stringByAppendingPathComponent:@"QQ_V5.4.0.dmg"];
NSLog(@"File downloaded to: %@",newFilePath);
// 移动文件到新路径
[[NSFileManager defaultManager] moveItemAtPath:location.path toPath:newFilePath error:nil];
}
/**
* 每次写入数据到临时文件时,就会调用一次这个方法。可在这里获得下载进度
*
* @param bytesWritten 这次写入的文件大小
* @param totalBytesWritten 已经写入沙盒的文件大小
* @param totalBytesExpectedToWrite 文件总大小
*/
- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask
didWriteData:(int64_t)bytesWritten
totalBytesWritten:(int64_t)totalBytesWritten
totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite
{
// 下载进度
_progressview.progress = 1.0 * totalBytesWritten / totalBytesExpectedToWrite;
NSLog(@"当前下载进度:%.2f%%",100.0 * totalBytesWritten / totalBytesExpectedToWrite);
}
/**
* 恢复下载后调用
*/
- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask
didResumeAtOffset:(int64_t)fileOffset
expectedTotalBytes:(int64_t)expectedTotalBytes
{
NSLog(@"------");
}
网友评论