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];

}