学习NSURLSession

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习NSURLSession相关的知识,希望对你有一定的参考价值。

NSURLSession 在ios7的时候,推出这个。主要是用来替换NSURLConnection。

NSURLSession是一组相互依赖的类,它的大部分组件和NSURLConnection中的组件相同如NSURLRequest,NSURLCache等。而NSURLSession的不同之处在于,它将NSURLConnection替换为NSURLSession和NSURLSessionConfiguration,以及3个NSURLSessionTask的子类:NSURLSessionDataTask, NSURLSessionUploadTask, 和NSURLSessionDownloadTask。

关于图例:

技术分享

 

NSURLSession由NSURLSessionConfiguration和可选代理(optional delegate)构成。再根据你的网络需求通过NSURLSessionTask来创建session。

 

1、NSURLSessionConfiguration

简介

  • NSURLSessionConfiguration主要用于配置NSURLSession会话属性,其工作模式主要有三种:

    • 默认模式(defaultSessionConfiguration):使用硬盘来缓存数据,可以使用缓存的Cache,Cookie,鉴权。

    • 及时模式(ephemeralSessionConfiguration): 临时session配置,与默认配置相比,这个配置不会将缓存、cookie等存在本地,只会存在内存里,所以当程序退出时,所有的数据都会消失

    • 后台模式(backgroundSessionConfiguration):在后台完成上传下载,创建Configuration对象的时候需要给一个NSString的ID用于追踪完成工作的Session是哪一个。 做远程push通知或是应用程序挂起的时候就要用到这个configuration。

常用属性

  • identifie:设置后台任务的标识符

  • requestCachePolicy:设置缓存策略

  • timeoutIntervalForRequest:设置请求超时时长

  • networkServiceType:设置网络服务类型

  • HTTPAdditionalHeaders:设置头部参数

  • allowsCellularAccess:设置是否在非无线的情况下请求网络(使用蜂窝数据)

  • HTTPMaximumConnectionsPerHost:设置主机网络连接个数

  • discretionary: discretionary属性为YES时表示当程序在后台运作时由系统自己选择最佳的网络连接配置,该属性可以节省通过蜂窝连接的带宽。在使用后台传输数据的时候,建议使用discretionary属性,而不是allowsCellularAccess属性,因为它会把WiFi和电源可用性考虑在内。这个标志允许系统为分配任务进行性能优化。这意味着只有当设备有足够电量时,设备才通过Wifi进行数据传输。如果电量低,或者只仅有一个蜂窝连接,传输任务是不会运行的。后台传输总是在discretionary模式下运行。

常用方法

  • setHTTPAdditionalHeaders:设置头部/参数

    // 设置所有的请求只接收JSON数据;

   // 设置网络请求api所需的头部参数;

    [configuration setHTTPAdditionalHeaders:@{@"Accept": @"application/json", @"apikey": @"159d95a8c050074fe3ca0df0d901fc62"}];

 

2、NSURLSession 网络会话

  • NSURLSession是为了代替NSURLConnection而设计的。Sessions的所有工作都是通过NSURLSessionTask对象完成。可以用block,delegate,或者两者混合来创建task。

 

以上是关于学习NSURLSession的主要内容,如果未能解决你的问题,请参考以下文章

学习NSURLSession

iOS学习笔记13-网络NSURLSession

iOS开发之网络编程--1NSURLSession的基本使用

iOS开发之网络编程--1NSURLSession的基本使用

ios学习笔记——NSURLSession

NSURLSession学习笔记简介