NSURLSession后台上传 - 需要启用后台模式吗?

Osc*_*mez 4 iphone xcode ios nsurlsession nsurlsessionuploadtask

我正在实例化一个NSURLSession像这样做几个后台上传:

  sessionConfiguration = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:myIdentifier];
Run Code Online (Sandbox Code Playgroud)

在大多数情况下,一切似乎都运行正常,但我想知道是否需要在p.list中添加背景Fetch键,如果我所做的只是后台上传而不是下载?我无法找到文件说我应该或不应该.特别是在XCode 5 +上,我想知道如果在Capabilities> Background模式下,我应该启用或不启用后台获取,如果我正在做的是后台上传,请注意我在上传完成后会读取响应,这可能被视为"下载".

Adi*_*mro 5

官方指南后台执行声明了三种后台执行:

  1. 执行有限长任务 - 使用UIApplication方法
    beginBackgroundTaskWithName:expirationHandler:执行有限时间任务.
  2. 在后台下载内容 - NSURLSession用于下载内容.将NSURLSession您的应用提供的是在单独的系统级守护程序运行并在完成后,通过完成处理器回来的应用程序.(您上面提到的实施)
  3. 实现长时间运行的任务 - 需要长时间运行的任务在此类别下处理,如音频,voip,位置,下载进程,更新内容.这些类型的任务需要UIBackgroundModesinfo.plist中提到的特殊键.

所以回答你的问题,你不需要UIBackgroundModes密钥,直到你不属于长期运行的任务类别.