2015-10-22 78 views
1

上下文: 我嘗試使用backgroundSessionConfiguration從動作擴展調用創建任務(下載或上載)。NSURLSessionTask創建失敗,帶有backgroundSessionConfiguration擴展

要做到這一點,我的休耕爲例蘋果documention

-(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; 
} 

我的問題是,當我叫[mySession downloadTaskWithURL:url];它返回零。

如果我將配置更改爲NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];,則會創建一個任務。

我沒有看到我做錯了什麼,我創建了一個應用程序組,我使用它的應用程序和擴展。

我使用在config.sharedContainerIdentifier中創建的組名,但我不確定是否有必要。

注意:我有與uploadTask相同的問題。

回答

0
  1. 您使用ARC嗎?如果沒有,請確保您的會話正確保留。 (它看起來像你直接使用伊娃)

  2. 是共享容器標識符是否正確?如果容器不在您的權利中或者不存在,您的會話將立即失效。添加一個無效委託方法,看看它是否被調用。如果是這樣,那可能是問題所在。