Ios 使用backgroundSessionConfiguration在扩展中创建NSURLSessionTask失败

Ios 使用backgroundSessionConfiguration在扩展中创建NSURLSessionTask失败,ios,objective-c,nsurlsession,nsurlsessionconfiguration,Ios,Objective C,Nsurlsession,Nsurlsessionconfiguration,背景: 我尝试通过操作扩展调用CreateaTask(下载或上传),并使用backgroundSessionConfiguration 为了做到这一点,我把这个例子放在苹果上 我的问题是,当我调用[mySession downloadTaskWithURL:url]时它返回nil 如果我将配置更改为NSURLSessionConfiguration*configuration=[NSURLSessionConfiguration defaultSessionConfiguration]然后创建一

背景: 我尝试通过操作扩展调用CreateaTask(下载或上传),并使用backgroundSessionConfiguration

为了做到这一点,我把这个例子放在苹果上

我的问题是,当我调用
[mySession downloadTaskWithURL:url]时它返回nil

如果我将配置更改为
NSURLSessionConfiguration*configuration=[NSURLSessionConfiguration defaultSessionConfiguration]然后创建一个任务

我不知道我做错了什么,我已经创建了一个应用程序组,并在应用程序和扩展中使用它

我使用在
config.sharedContainerIdentifier
中创建的组名,但我不确定是否有必要

注意:上传任务也有同样的问题

  • 你在用ARC吗?如果没有,请确保会话被正确保留。(看起来您正在直接使用ivar。)

  • 共享容器标识符正确吗?如果容器不在您的权限中或还不存在,您的会话将立即失效。添加一个无效委托方法,并查看是否正在调用该方法。如果是这样,那可能就是问题所在

  • 你在用ARC吗?如果没有,请确保会话被正确保留。(看起来您正在直接使用ivar。)

  • 共享容器标识符正确吗?如果容器不在您的权限中或还不存在,您的会话将立即失效。添加一个无效委托方法,并查看是否正在调用该方法。如果是这样,那可能就是问题所在

  • -(void)downloadTest
    {
        NSURLSession *mySession = [self configureMySession];
        NSURL *url = [NSURL URLWithString:@"http://www.sellcell.com/blog/wp-content/uploads/2014/03/dog-apps.jpg"];
        NSURLSessionTask *myTask = [mySession downloadTaskWithURL:url];
        [myTask resume];
    }
    
    - (NSURLSession *) configureMySession {
        if (!_mySession) {
            NSURLSessionConfiguration* config = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:@"com.mycompany.myapp.backgroundsession"];
            // To access the shared container you set up, use the sharedContainerIdentifier property on your configuration object.
            config.sharedContainerIdentifier = @"group.com.mycompany.appname"; 
            _mySession = [NSURLSession sessionWithConfiguration:config delegate:self delegateQueue:nil];
        }
        return _mySession;
    }