A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xqlyn123 中级黑马   /  2015-11-30 23:46  /  1070 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

中文快速导航:

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这一做法的评论:


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马