URL加载系统NSURLSession 之URLSessionConfiguration的使用【二】

简介:

NSURLSession是IOS SDK提供的一组相对容易使用的网络API。它包括几个部分URLSessionConfiguration、URLSessionDelegate、URLSessionTask(组)、URLRequest、URLCache、

URLSessionConfiguration指定NSURLSession的配置信息。这些配置信息决定了NSURLSession的种类,HTTP的额外headers,请求的timeout时间,Cookie的接受策略等配置信息

URLSessionConfiguration:

创建URL绘话配置对象

1、class var `default`: URLSessionConfiguration // 默认的URL会话配置对象,其存储方式是基于硬盘的持久化存储方式,会保存用户的证书到钥匙串中

2、class var ephemeral: URLSessionConfiguration // 与第一个类似,不同之处在于存储的位置不同,此方式存储的位置是内存中

3、class func background(withIdentifier: String) -> URLSessionConfiguration
创建一个可以在后台甚至APP已经关闭的时候仍然在传输数据的会话。注意,后台Session一定要在创建的时候赋予一个唯一的identifier,这样在APP下次运行的时候,能够根据identifier来进行相关的区分。
如果用户关闭了APP,IOS 系统会关闭所有的background Session。而且,被用户强制关闭了以后,IOS系统不会主动唤醒APP,只有用户下次启动了APP,数据传输才会继续。

常规的属性

1、var identifier: String? // 配置后台会话的唯一标识符

2、var httpAdditionalHeaders: [AnyHashable : Any]? // 请求头

3、var networkServiceType: NSURLRequest.NetworkServiceType // 网络服务类型

4、var allowsCellularAccess: Bool // 会话是否允许蜂窝数据

5、var timeoutIntervalForRequest: TimeInterval // 进行请求连接的超时时间

6、var timeoutIntervalForResource: TimeInterval // 允许请求的请求最长时间

7、var sharedContainerIdentifier: String? // 后台URL会话中的共享标识符

8、var waitsForConnectivity: Bool // 等待连接是否立刻改变成可用或者不可用

例子一、创建默认的请求会话配置

/*创建默认的URL会话配置*/
func creatDefautConfig() -> Void {
        let defaultConfig:URLSessionConfiguration = URLSessionConfiguration.default
        self.setHttpHeadersAndInfo(configuration: defaultConfig)
    }


 /*配置附加请求头字典和其他信息*/
    private func setHttpHeadersAndInfo(configuration:URLSessionConfiguration) -> Void {
        /*请求头*/
        let headers = ["content-type":"application/json;charset=UTF-8"]
        configuration.httpAdditionalHeaders = headers
        /*网络服务类型*/
        configuration.networkServiceType = .default // 标准网络流量
        /*禁止使用蜂窝移动连接*/
        configuration.allowsCellularAccess = false
        /*超时连接*/
        configuration.timeoutIntervalForRequest = 30
        /*请求时长*/
        configuration.timeoutIntervalForResource = 30 * 10
    }
    

例子二、创建存储在内存中的请求会话配置

/*创建存储在内存中的会话类型*/
    func creatMeral() -> Void {
        let meralConfig:URLSessionConfiguration = URLSessionConfiguration.ephemeral
        self.setHttpHeadersAndInfo(configuration: meralConfig)
    }
    

/*配置附加请求头字典和其他信息*/
    private func setHttpHeadersAndInfo(configuration:URLSessionConfiguration) -> Void {
        /*请求头*/
        let headers = ["content-type":"application/json;charset=UTF-8"]
        configuration.httpAdditionalHeaders = headers
        /*网络服务类型*/
        configuration.networkServiceType = .default // 标准网络流量
        /*禁止使用蜂窝移动连接*/
        configuration.allowsCellularAccess = false
        /*超时连接*/
        configuration.timeoutIntervalForRequest = 30
        /*请求时长*/
        configuration.timeoutIntervalForResource = 30 * 10
    }
    

例子三、创建后台请求会话配置

/*后台类型URL会话配置*/
func creatBackgroundConfig() -> Void {
        let identifier:String = self.craetInentfire()
        let back:URLSessionConfiguration = URLSessionConfiguration.background(withIdentifier: identifier)
        self.setHttpHeadersAndInfo(configuration: back)
    }

/*创建后台会话唯一标识符*/
    func craetInentfire() -> String {
        let date:Date = Date.init(timeIntervalSinceNow: 0)
        let timeInterval:TimeInterval = date.timeIntervalSince1970
        let identifier = "\(timeInterval)"
        return identifier
    }

/*配置附加请求头字典和其他信息*/
    private func setHttpHeadersAndInfo(configuration:URLSessionConfiguration) -> Void {
        /*请求头*/
        let headers = ["content-type":"application/json;charset=UTF-8"]
        configuration.httpAdditionalHeaders = headers
        /*网络服务类型*/
        configuration.networkServiceType = .default // 标准网络流量
        /*禁止使用蜂窝移动连接*/
        configuration.allowsCellularAccess = false
        /*超时连接*/
        configuration.timeoutIntervalForRequest = 30
        /*请求时长*/
        configuration.timeoutIntervalForResource = 30 * 10
    }
    

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值