中文快速导航:
1.iOS9网络适配_ATS:改用更安全的HTTPS(见Demo1) i. WHAT(什么是SSL/TLS?跟HTTP和HTTPS有什么关系) ii. WHY(以前的HTTP不是也能用吗?为什么要用SSL/TLS?Apple是不是又在反人类?) iii. HOW(如何适配?---弱弱地问下:加班要多久?) a.第1种情况:HTTPS Only (只有HTTPS,所有情况下都使用ATS) b.第2种情况:Mix & Match(混合) c.第3种情况:Opt Out(禁用ATS) d.第4种情况:Opt Out With Exceptions(除特殊情况外,都不使用ATS) e.Certificate Transparency iv. Q-A 2.iOS9新特性_更灵活的后台定位(见Demo2) 3.企业级分发 i. iOS9以后,企业级分发ipa包将遭到与Mac上dmg安装包一样的待遇:默认不能安装,也不再出现“信任按钮” ii. iOS9以后,企业分发时可能存在:下载的ipa包与网页两者的 bundle ID 无法匹配而导致下载失败的情况 4.Bitcode 5.iOS9 URL Scheme 适配_引入白名单概念(见Demo3) i.常见 URL Scheme ii.Q-A 6.iPad适配Slide Over 和 Split View 7.字体间隙变大导致 UI 显示异常 8.升级 Xcode7 后的崩溃与警告 i.iOS9 下使用 Masonry 会引起崩溃的一种情况 ii.Xcode 升级后,旧的状态栏的样式设置方式会引起警告 a.Demo4---navigationController状态栏样式新的设置方法 iii.Xcode7 在 debug 状态下也生成 .dSYM 文件引起的警告 iv.Xcode7 无法使用 8.x 系统的设备调试,一运行就报错 there is an intenal API error v.使用了 HTML 的 iframe 元素可能导致无法从 Safari 跳转至 App vi.iOS 9锁屏控制台会打印警告 vii.Xcode7 上传应用时提示 ITMS-90535 Unable to publish iOS app with xxx SDK 的问题 9.Demo5、Demo6--- 搜索 API 10.iOS国际化问题:当前设备语言字符串返回有变化
1. Demo1_iOS9网络适配_ATS:改用更安全的HTTPS [摘要]为了强制增强数据访问安全, iOS9 默认会把 所有的http请求 所有从NSURLConnection 、 CFURL 、 NSURLSession发出的 HTTP 请求,都改为 HTTPS 请求:iOS9.x-SDK编译时,默认会让所有从NSURLConnection 、 CFURL 、 NSURLSession发出的 HTTP 请求统一采用TLS 1.2 协议。因为 AFNetworking 现在的版本底层使用了 NSURLConnection ,众多App将被影响(基于iOS8.x-SDK的App不受影响)。服务器因此需要更新,以解析相关数据。如不更新,可通过在 Info.plist 中声明,倒退回不安全的网络请求。而这一做法,官方文档称为ATS,全称为App Transport Security,是iOS9的一个新特性。 一个符合 ATS 要求的 HTTPS,应该满足如下条件: - Transport Layer Security协议版本要求TLS1.2以上
- 服务的Ciphers配置要求支持Forward Secrecy等
- 证书签名算法符合ATS要求等
官方文档 App Transport Security Technote 对ATS 的介绍: 注:有童鞋反映:服务器已支持TLS 1.2 SSL ,但iOS9上还是不行,还要进行本文提出的适配操作。 那是因为:要注意 App Transport Security 要求 TLS 1.2,而且它要求站点使用支持forward secrecy协议的密码。证书也要求是符合ATS规格的,ATS只信任知名CA颁发的证书,小公司所使用的 self signed certificate,还是会被ATS拦截。。因此慎重检查与你的应用交互的服务器是不是符合ATS的要求非常重要。对此,建议使用下文中给出的NSExceptionDomains,并将你们公司的域名挂在下面。下文也会详细描述该问题。 官方文档 App Transport Security Technote对CA颁发的证书要求: "Certificates must be signed using a SHA256 or better signature hash algorithm, with either a 2048 bit or greater RSA key or a 256 bit or greater Elliptic-Curve (ECC) key. Invalid certificates result in a hard failure and no connection" 在讨论之前,跟往常一样,先说下iOS程序猿们最关心的问题: 跟我有毛关系?需要我加班吗?! 首先咱们来看下业内对Apple这一做法的评论:
|