第六章 保护网络传输
使用NSURLProtectionSpace验证手机银行应用的用户与安全的银行服务器进行通信,特别是在发出的请求会操纵后端数据时更是如此。NSURLProtectionSpace表示需要认证的服务器或域,是所有进来的NSURLAuthenticationChallenges的一个属性。
MAC算法: (Message Authentication Codes) 带秘密密钥的Hash函数:消息的散列值由只有通信双方知道的秘密密钥K来控制。此时Hash值称作MAC。
请求,响应发生的步骤MD5 、 SHA-1 、SHA-256 、 DES 、 AES 、 Triple-DES
在设备上安全的存储认证信息:既然应用能安全地与服务层进行通信,那就需要在设备上安全地存储信息。Apple提供了Keychain Services API 来完成这项工作。Keychain是一种在设备上安全存储少量数据的机制,比如密码、密钥、证书和身份信息等。Keychain并不适合于通用目的的加密和数据存储,而是用来存储需要保护的信息,比如密码和私钥就会以加密的形式存储起来。
Keychain 有两个重要的属性:kSecAttrAccessible 与 kSecAttrAccessGroup。
第七章 优化请求性能
度量网络性能:带宽、延迟、电量功耗
网络带宽:可以描述为两个端点之间的通信通道每秒钟可以传输的位数。
网络延迟:指的是网络包在两个端点间一次往返所需的时间。
电量功耗:iOS设置的运行通常使用的是都是电池。
1.减少请求带宽:响应压缩、请求压缩、
响应压缩:响应负载压缩是最简单的一种HTTP负载压缩形式。响应有响应头和响应体构成。响应压缩会对响应体应用的数据压缩算法,但不会操纵HTTP头。
请求压缩:比较复杂,因为需要客户端和服务器端两边实现,web浏览器对请求压缩的支持并不太好,因为浏览器不知道目标服务器是否能够支持对请求的解压缩。iOS应用首先查询服务器来判断是否支持压缩,然后根据服务器的响应来调整其行为。
避免网络请求:默认缓存行为、配置NSURLCache
8 底层网络
BSD Socket 完全使用C语言实现,担负起几乎所有的Internet流量,并且可以让应用程序开发人员完全控制到远程设备或服务器的通信。Socket指的是两个端点之间的单向连接,因此它们通常情况下都是成对出现的:一个用于读,一个用于写。
原始的Socket无法访问操作系统内建的网络特性(比如系统范围的VPN)。更糟糕的是,初始化Socket连接并不会自动打开设备的Wi-Fi或是蜂窝无线电。无线电会智能地关闭以节省电池电量。任何通信连接都会失败,除非其他网络进程激活了无线电。CFNetwork对BSD Socket的封装可以激活设备的无线电,因此几乎所有的场景中,我们都建议使用CFNetwork而非BSD Socket。
CFNetwork位于框架层次的更上一层,是对BSD Socket的一层轻量级。
NSStream是针对CFNetworkAPI的OC封装器,NSStream使用委托协议NSStreamDelegate,几乎完全模仿了CFNetwork流回调函数的功能。NSStream有两个具体类,分别是NSInputStream与NSoutputStream
第九章 测试与操纵网络流量
Wireshark 可以追踪TCP流的能力
Charles
第十章 使用推送通知
本地通知都是UILocalNotification为例,需要用fireDate来告知系统何时推送通知。不使用fireDate调度本地通知会立刻将通知发送出去。
timeZone,时区
repeatInterval:重复
UILocalNotification 远程通信第十一章 应用间通信
1.URL方案,注册URL Schemes
2.共享钥匙串:对于企业特别有用,因为它会创建一块公共区域,共享同一BundleSeed ID的所有应用都可以访问这块区域。通过这块共享空间,我们可以非常轻松的为一组相关应用实现单点登录(Single Sign-On, SSO)认证系统。
网友评论