【发布时间】:2014-08-18 19:12:17
【问题描述】:
当下载连接丢失或最初没有连接时,completionHandler 会因错误而被触发,并且在连接恢复后我没有机会恢复。使用 AFNetworking/可达性处理可恢复下载的正确方法是什么?我是否必须创建另一个任务,因为这个任务由于网络故障已经过期或者有办法恢复它?
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
AFURLSessionManager *man = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
NSURL *URL = [NSURL URLWithString:@"http://my_server.com/video/2.mp4"];
NSURLRequest *request = [NSURLRequest requestWithURL:URL];
NSURLSessionDownloadTask *downloadTask = [man downloadTaskWithRequest:request progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
NSURL *documentsDirectoryURL = [[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil];
return [documentsDirectoryURL URLByAppendingPathComponent:[response suggestedFilename]];
} completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
NSLog(@"File downloaded to: %@, error: %@", filePath, error);
}];
[man.reachabilityManager startMonitoring];
[man.reachabilityManager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
switch (status) {
case AFNetworkReachabilityStatusReachableViaWWAN:
case AFNetworkReachabilityStatusReachableViaWiFi:
[downloadTask resume];
break;
case AFNetworkReachabilityStatusNotReachable:
default:
[downloadTask suspend];
break;
}
}];
【问题讨论】:
标签: ios network-programming afnetworking-2