AFNetworking 3.0下载后台模式
AFNetworking 3.0 download background mode
我使用 AFNetworking 库 3.0 下载文件。我为 AFNetworking 会话创建了单例,但是当我的 phone 转到锁屏会话已被取消时。我的项目也接受了 "Background fetch mode"
我做错了什么?感谢帮助!
我的代码如下:
-(void)downloadShowingProgress:(NSString *)url nameString:(NSString *)nameString indexPath:(NSIndexPath *)indexPath{
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
NSURL *URL = [NSURL URLWithString:url];
NSURLRequest *request = [NSURLRequest requestWithURL:URL];
self.downloadTask = [manager downloadTaskWithRequest:request progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
NSFileManager *fileManager = [NSFileManager defaultManager];
NSURL *directoryURL = [fileManager URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil];
NSURL *documentsDirectoryURL = [directoryURL URLByAppendingPathComponent:@".fade"];
NSError *error;
if ([fileManager createDirectoryAtURL:documentsDirectoryURL withIntermediateDirectories:YES attributes:nil error:&error]){
NSLog(@"Create Sucess");
}
else{
NSLog(@"Create error: %@", error);
}
return [documentsDirectoryURL URLByAppendingPathComponent:[NSString stringWithFormat:@"%@.mp3",nameString]];
} completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
NSLog(@"** File downloaded to: %@", filePath);
}];
[self.downloadTask resume];
}
你必须像这样添加 backgroundSessionConfigurationWithIdentifier:
-(void)downloadShowingProgress:(NSString *)url nameString:(NSString *)nameString indexPath:(NSIndexPath *)indexPath{
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:@"download-task"];
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
NSURL *URL = [NSURL URLWithString:url];
NSURLRequest *request = [NSURLRequest requestWithURL:URL];
self.downloadTask = [manager downloadTaskWithRequest:request progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
NSFileManager *fileManager = [NSFileManager defaultManager];
NSURL *directoryURL = [fileManager URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil];
NSURL *documentsDirectoryURL = [directoryURL URLByAppendingPathComponent:@".fade"];
NSError *error;
if ([fileManager createDirectoryAtURL:documentsDirectoryURL withIntermediateDirectories:YES attributes:nil error:&error]){
NSLog(@"Create Sucess");
}
else{
NSLog(@"Create error: %@", error);
}
return [documentsDirectoryURL URLByAppendingPathComponent:[NSString stringWithFormat:@"%@.mp3",nameString]];
} completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
NSLog(@"** File downloaded to: %@", filePath);
}];
[self.downloadTask resume];
}
我使用 AFNetworking 库 3.0 下载文件。我为 AFNetworking 会话创建了单例,但是当我的 phone 转到锁屏会话已被取消时。我的项目也接受了 "Background fetch mode" 我做错了什么?感谢帮助! 我的代码如下:
-(void)downloadShowingProgress:(NSString *)url nameString:(NSString *)nameString indexPath:(NSIndexPath *)indexPath{
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
NSURL *URL = [NSURL URLWithString:url];
NSURLRequest *request = [NSURLRequest requestWithURL:URL];
self.downloadTask = [manager downloadTaskWithRequest:request progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
NSFileManager *fileManager = [NSFileManager defaultManager];
NSURL *directoryURL = [fileManager URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil];
NSURL *documentsDirectoryURL = [directoryURL URLByAppendingPathComponent:@".fade"];
NSError *error;
if ([fileManager createDirectoryAtURL:documentsDirectoryURL withIntermediateDirectories:YES attributes:nil error:&error]){
NSLog(@"Create Sucess");
}
else{
NSLog(@"Create error: %@", error);
}
return [documentsDirectoryURL URLByAppendingPathComponent:[NSString stringWithFormat:@"%@.mp3",nameString]];
} completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
NSLog(@"** File downloaded to: %@", filePath);
}];
[self.downloadTask resume];
}
你必须像这样添加 backgroundSessionConfigurationWithIdentifier:
-(void)downloadShowingProgress:(NSString *)url nameString:(NSString *)nameString indexPath:(NSIndexPath *)indexPath{
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:@"download-task"];
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
NSURL *URL = [NSURL URLWithString:url];
NSURLRequest *request = [NSURLRequest requestWithURL:URL];
self.downloadTask = [manager downloadTaskWithRequest:request progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
NSFileManager *fileManager = [NSFileManager defaultManager];
NSURL *directoryURL = [fileManager URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil];
NSURL *documentsDirectoryURL = [directoryURL URLByAppendingPathComponent:@".fade"];
NSError *error;
if ([fileManager createDirectoryAtURL:documentsDirectoryURL withIntermediateDirectories:YES attributes:nil error:&error]){
NSLog(@"Create Sucess");
}
else{
NSLog(@"Create error: %@", error);
}
return [documentsDirectoryURL URLByAppendingPathComponent:[NSString stringWithFormat:@"%@.mp3",nameString]];
} completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
NSLog(@"** File downloaded to: %@", filePath);
}];
[self.downloadTask resume];
}