Session中任务的行为取决于三件事:session的类型、任务的类型、当任务创建的时候app是否在前台运行。
Sessions的类型
我们通过配置NSURLSessionConfiguration的对象类配置NSURLSession。session类型有三种:
1、一般模式:类似于其他下载网址的基础方法,可以使用缓存的Cache、Cookie、鉴权。
2、及时模式:不使用Cache、Cookie、鉴权。
3、后台模式:在后台完成上传下载,创建Configuration对象的时候需要给一个NSString的ID用于追中完成工作的Session是哪一个。
任务的类型:
1、NSURLSessionDataTask:使用NSData对象发送接受数据,因为数据任务不将数据存储到文件中,所以不支持session的后台模式。
2、NSURLSessionDownloadTask:以文件的形式接收数据,并在app没有运行的时支持后台下载。
3、NSURLSessionUploadTask:通常以文件的形式发送(上传)数据,并在app没有运行的时候支持后台上床。
后台传输的注意事项:
当你的app被暂停的时候,NSURLSession类支持后台传输。后台转移仅供使用后台模式配置的session对象使用。
由于实际传输是一个单独的过程并且由于重新启动app的过程的代价比较昂贵,所以一些功能是不可用的:
1、该session必须实现一个事件传递的代理(用于上传和下载,代理作为相同的中间传输方法)
2、仅HTTP和HTTPS协议的支持(没有自定义协议)
3、只支持上传和下载任务(没有数据任务)
4、重定向
5、当应用程序在后台启动的时候,配置对象的公开属性是被认为真实的。