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

时间:2015-03-16 20:25:03

标签: ios iphone xcode nsurlsession nsurlsessionuploadtask

我正在实例化NSURLSession以执行以下几种后台上传:

  sessionConfiguration = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:myIdentifier];

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

1 个答案:

答案 0 :(得分:5)

官方指南Background Execution声明了三种背景执行:

  1. 执行有限长任务 - 使用UIApplication方法
    beginBackgroundTaskWithName:expirationHandler:执行有限 时间任务。
  2. 在后台下载内容 - 使用NSURLSession 下载内容。您的应用提供的NSURLSession会继续运行 单独的系统级守护程序,完成后,返回到应用程序 完成处理程序。 (您上面提到的实施)
  3. 实施长时间运行的任务 - 需要运行的任务 很长一段时间,在这个类别下处理,如音频,voip, 位置,下载进程,更新内容。这些类型的任务 需要info.plist中提到的特殊UIBackgroundModes密钥。
  4. 回答你的问题,你不需要UIBackgroundModes密钥,直到你不属于长期运行的任务类别。