NSURLSessionDataTask 在后台 session

NSURLSessionDataTask in background session

我想发出一个空的 POST 请求并在我的 iOS 应用程序处于后台时读取响应 headers。查看文档明确说明后台支持上传和下载任务,但是有两个问题:

  1. 我不需要上传内容,所以我不想创建一个空文件来使用。
  2. 我需要获取 headers,因此下载任务不提供必要的委托回调。

这给我留下了 NSURLSessionDataTaskdocumentation 指出:

Note: Prior to iOS 8 and OS X 10.10, data tasks are not supported in background sessions.

然而,another documentation page 同名声明(后台传输注意事项):

Only upload and download tasks are supported (no data tasks).

哪个文档页是正确的? NSURLSessionDataTasks 没有 后台会话支持上传数据吗?

观看 WWDC 2014 视频 What's New in Foundation Networking,时长约 49 分钟。最重要的是,您现在可以在后台会话中执行数据任务,但仅当应用 运行 时才有效.如果应用程序挂起或终止,它不能执行数据任务,但您可以在收到响应后将其转换为下载任务。 (FWIW,我不觉得有一个只能在应用程序仍然运行时工作的后台数据任务特别有用 运行。)

我不确定您为什么担心下载任务与数据任务。让我印象深刻的是,您可以启动一个下载任务,然后在 didFinishDownloadingToURL 中查看 downloadTask.response

话虽如此,我不清楚您的更广泛意图是什么。如果你想 ping 你的服务器(例如,查看是否有数据可供下载),你通常会使用后台获取。