NSURLSession后台会话可以运行数据任务吗?

时间:2015-05-26 06:25:31

标签: background watchkit

doc提到了一行

在后台会话中,仅支持上传和下载任务(无数据任务)

但是doc

似乎表明后台会话可以执行数据任务?

会话的行为由用于创建它的配置对象确定。因为有三种类型的配置对象,所以类似地有三种类型的会话:默认会话的行为与NSURLConnection非常相似,短暂的会话不会将任何内容缓存到磁盘,下载会话将结果存储在文件中并继续传输数据当您的应用被暂停,退出或崩溃时。

在这些会话中,您可以安排三种类型的任务:用于检索数据到内存的数据任务,用于将文件下载到磁盘的下载任务,以及用于从磁盘上载文件并将响应作为数据接收到内存中的上载任务。

什么是正确的?我是否能够在NSURL上发出GET http请求,然后JSONSerialize在"背景"

中收到的NSDATA

1 个答案:

答案 0 :(得分:1)

您只能在后台运行上传和下载任务。这是直接从ULR Loading System

中引用的引用

后台转移注意事项

NSURLSession类支持暂停应用时的后台传输。后台传输仅由使用后台会话配置对象创建的会话提供(通过调用backgroundSessionConfiguration:返回)。

使用后台会话,因为实际传输是由单独的进程执行的,并且因为重新启动应用程序的过程相对昂贵,所以有一些功能不可用,导致以下限制:

  • 会话必须提供事件传递的代表。 (对于上载和下载,代理的行为与进程内传输的行为相同。)
  • 仅支持HTTP和HTTPS协议(无自定义协议)。

  •   

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

  • 始终遵循重定向。

  • 如果在应用程序处于后台时启动了后台传输,则配置对象的自由选择属性将被视为为真。

您要执行的操作是将GET请求作为下载请求运行,并将JSON数据保存到文件中。下载完成后,将文件内容读入内存,并解析NSData,就像它来自数据请求一样。