0

我有NSURLSession一个后台配置同时下载两个或三个文件。除了委托方法之外,一切似乎都运行良好

-(void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask 
didFinishDownloadingToURL:(NSURL *)location

-(void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task 
didCompleteWithError:(NSError *)error

仅在所有下载任务完成时调用,而不是在每个下载任务完成时单独调用。其他用于单独更新下载进度功能的委托方法。

当我设置为时,问题也不会发生NSURLSessionConfigurationdefaultConfiguration但是后台下载显然不起作用。我错过了什么吗?我应该NSURLSessions为每个下载任务分开吗?

编辑:根据要求,这里是创建会话和配置的代码。我已经包含了默认配置和后台会话配置,尽管在创建中只使用了一个。

  if (!_backgroundURLSession) {
    NSString *sessionID = [NSString stringWithFormat:@"%@.BackgroundSession", [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleIdentifier"]];


    NSURLSessionConfiguration *sessionConfig = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:sessionID];
    NSURLSessionConfiguration *defaultConfig = [NSURLSessionConfiguration defaultSessionConfiguration];
    _backgroundURLSession = [NSURLSession sessionWithConfiguration:sessionConfig delegate:self delegateQueue:nil];
  }

用于开始任何下载,[_backgroundURLSession downloadTaskWithURL:[NSURL URLWithString:_url]]用于创建一个NSURLSessionDownloadTask,下载任务存储在NSMutableDictionary以 URL 为键的 a 中。当任务完成时,下载任务将从委托方法中的字典中删除。字典主要用于跟踪进度和取消任务。

4

1 回答 1

0

似乎这种行为是 iOS 模拟器特有的,以及 NSURLSession 中的一些其他奇怪行为。当我在设备上运行代码时,一切正常。

于 2014-11-17T02:56:34.023 回答