NSURLSession:New Features and Best Practices

session 711

  • 今天我们主要了解下NSURLSession 在iOS10中的新变化,以及我们怎么样更好的使用他。
  • 主要分为3点:
    • iOS10中API做了对应的拓展,丰富了功能。
    • 聊聊安全性相关内容
    • 开发者如何更优雅地使用

1.API拓展

1.0 历史

  • 在了解最新的API的时候,我们还是需要关注下我们高级网络API的一些历史。
NSURLSession:New Features and Best Practices_第1张图片
API对比
  • 如图,在iOS7之前,我们一直使用的是NSURLConnection 作为网络请求的一大利器。随着时代的发展,我们需要保证网络数据的更好的使用。在13年的WWDC中,我们正式推出NSURLSession API保证使用。在经历了两个的过渡期,我们在15年把NSURLConnection正式否定。在此希望大家更好的使用NSURLSession。

1.1 NSURLSession的优点

  • 它遵循了HTTP/1.1,SPDY,HTTP/2协议,基本覆盖了所有网络请求。
  • 使用App Transport Security(ATS),保证请求的安全性。必须使用HTTPs
  • HTTP Strict Transport Security(HTST),保证数据传输过程安全
  • 不仅如此,在Cache,cookies,proxy,authentication 都进行了完善。

1.2 NSURLSession使用

  • 首先要知道的是,NSURLSessionConfiguration
    • configuration 可以设置请求的网络环境,(WIFI,移动数据)
    • 多样的传输类型设置:视频,音频,文本等数据
    • 缓存规则
    • cookie 规则
    • 存储空间大小的设置
    • 请求超时时间设置
     NSURLSessionConfiguration *congfiguration = [NSURLSessionConfiguration defaultSessionConfiguration];
    
    NSURLSession *session = [NSURLSession sessionWithConfiguration:congfiguration];
    NSString *url = @"https://www.cloudoc.com";
    
    NSURLSessionTask *task = [session dataTaskWithURL:[NSURL URLWithString:url] completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        
    }];
    
    [task resume];
  • 注意:我们不要每个session 对应一个task请求,而是可以一对多的形式,保证高效实用。
NSURLSession:New Features and Best Practices_第2张图片
Tips

2.0 HTTP/2 的介绍

  • 关于HTTP/2 我们知道多少。
  • 异步连接多路复用;
  • 头部压缩;
  • 请求/响应管线化;
  • 多路复用请求;
  • 对请求划分优先级;
  • 压缩HTTP头;
  • 服务器推送流(即Server Push技术);

2.1 Server Push

  • 放置网络重复请求
  • 服务器需要支持http2.0协议
  • 最重要的是:直接适用于NSURLSession 客户端不用做任何处理
NSURLSession:New Features and Best Practices_第3张图片
HTTP1.1

上图简单展示了一次HTTP1.1的请求。看以看到在每次请求的过程中都需要跟服务器进行一次通讯。从而延长的所有请求结束的时间。

NSURLSession:New Features and Best Practices_第4张图片
HTTP2.0

在使用了server Push 的HTTP2.0会进一步缩短请求时间,并且可以看到服务器会一次性将所有数据都返回,从而,获取数据的时间得到了缩短。
提高了网络的利用率。

3.0 Network statistics

  • iOS10中新增对网络请求检测的API ,保证网络请求的准确。
  • 主要有以下几个特质:
    • 监测弱网环境
    • 监测网络连接
    • apple 全平台通用

3.1 API

  • 主要有3个属性
    • 1.taskInterval 链接时长
    • 2.redirectCount 重连次数
    • 3.transactionMetrics

3.2 NSURLSessionTaskTransactionMetrics

  • 主要使用这个API获取每个阶段的网络请求时常,等数据,来分析对应的网络请求。
    下图就是简单的一次网络请求的需要的每一步分解。
NSURLSession:New Features and Best Practices_第5张图片
HTTP请求

4.0 网络安全性

  • 对传输数据进行加密
  • 不要在使用RC4加密算法(已经被公开)
  • 测试 $nucurl https://你的网址;
  • $nucurl —enable-rc4 https://你的网址
  • (iOS10最新的对网络安全访问)App Transport Security
  • 两个字段需要更新 NSAllowsArbitraryLoadsInWebContent(wkwebView)
    NSRequiresCertificateTransparency

你可能感兴趣的:(NSURLSession:New Features and Best Practices)