NSURLSessionDataTask在后台会话中

时间:2016-05-27 16:39:00

标签: ios nsurlsession nsurlsessiondatatask

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

  1. 我不需要上传内容,所以我不想创建一个空文件来使用。
  2. 我需要获取标题,因此下载任务不会提供必要的委托回调。
  3. 这给我留下NSURLSessionDataTask documentation状态:

      

    注意:在iOS 8和OS X 10.10之前,后台会话不支持数据任务。

    但是,another documentation page表示同一标题(背景转移注意事项):

      

    仅支持上传和下载任务(无数据任务)。

    哪个文档页面正确?在后台会话中是否支持上传NSURLSessionDataTasks 数据?

1 个答案:

答案 0 :(得分:8)

请参阅WWDC 2014视频What's New in Foundation Networking,大约需要49分钟。最重要的是,您现在可以在后台会话中执行数据任务,但它仅在应用程序运行时才有效。如果应用程序被挂起或终止,它将无法执行数据任务,但您可以在收到响应时将其转换为下载任务。 (FWIW,我发现只有在应用程序仍在运行时才能运行的后台数据任务特别有用。)

我不确定您为何担心下载与数据任务。我觉得您可以发起下载任务,然后在didFinishDownloadingToURL中查看downloadTask.response

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