适配ios9
2015-10-30 14:58
351 查看
iOS9把所有的http请求都改为https了:iOS9系统发送的网络请求将统一使用TLS 1.2 SSL。采用TLS 1.2 协议,目的是 强制增强数据访问安全,而且 系统 Foundation 框架下的相关网络请求,将不再默认使用 Http 等不安全的网络协议,而默认采用 TLS 1.2。服务器因此需要更新,以解析相关数据。如不更新,可通过在 Info.plist 中声明,倒退回不安全的网络请求。
在讨论之前,跟往常一样,先说下iOS程序猿们最关心的问题:
跟我有毛关系?需要我加班吗?!
首先咱们来看下业内对Apple这一做法的评论:
![](http://cc.cocimg.com/api/uploads/20150702/1435820983397536.jpg)
这是某社交App上讨论,看来业内还是吐槽声和肯定声同在。
结论是:
跟你很有关系,加班吧,少年!
书归正传【严肃脸】,我们正式讨论下 WHAT,WHY,HOW:
WHAT(什么是SSL/TLS?跟HTTP和HTTPS有什么关系)
WHY(以前的HTTP不是也能用吗?为什么要用SSL/TLS,闲得慌?!Apple是不是又在反人类?)
HOW(如何适配?---弱弱地问下:加班要多久?)
WHAT(什么是SSL/TLS?跟HTTP和HTTPS有什么关系)
跟往常一样,先说结论:
TLS 是 SSL 新的别称。举个例子:
“TLS1.0”之于“SSL3.1”,犹“公元2015”之于“民国104”,或者是“一千克”之于“一公斤”,或者是“半斤”之于“八两”:称呼不同,但意思相同。
SSL 3.0版本之后的迭代版本被重新命名为TLS 1.0,
也就是说:
所以他们是一个东西,我们平常也经常简单见到 “SSL/TLS” 这种说法。
常用的是下面这些:
SSL 2.0
SSL 3.0
TLS 1.0 (SSL 3.1)
TLS 1.1 (SSL 3.1)
TLS 1.2 (SSL 3.1)
那为什么标题是“使用HTTPS”而没有提及SSL和TLS什么事? 要理解这个,要看下一个公式:
![](http://cc.cocimg.com/api/uploads/20150702/1435821042510658.png)
打个比方:如果原来的 HTTP 是塑料水管,容易被戳破;那么如今新设计的 HTTPS 就像是在原有的塑料水管之外,再包一层金属水管。一来,原有的塑料水管照样运行;二来,用金属加固了之后,不容易被戳破。
目前,应用最广泛的是TLS 1.0,接下来是SSL 3.0。但是,主流浏览器都已经实现了TLS 1.2的支持。
Apple让你的HTTP采用SSL/TLS协议,就是让你从HTTP转到HTTPS
WHY(以前的HTTP不是也能用吗?为什么要用SSL/TLS,闲得慌?!Apple是不是又在反人类?)
不使用SSL/TLS的HTTP通信,就是不加密的通信!
所有信息明文传播,带来了三大风险:
窃听风险(eavesdropping):第三方可以获知通信内容。
篡改风险(tampering):第三方可以修改通信内容。
冒充风险(pretending):第三方可以冒充他人身份参与通信。
SSL/TLS协议是为了解决这三大风险而设计的,希望达到:
所有信息都是加密传播,第三方无法窃听。
具有校验机制,一旦被篡改,通信双方会立刻发现。
配备身份证书,防止身份被冒充。
HOW(如何适配?---弱弱地问下:加班要多久?)
正如文章开头所说:
TLS 1.2 协议 强制增强数据访问安全 系统 Foundation 框架下的相关网络请求,将不再默认使用 Http 等不安全的网络协议,而默认采用 TLS 1.2。服务器因此需要更新,以解析相关数据。如不更新,可通过在 Info.plist 中声明,倒退回不安全的网络请求。
方案一:立即让公司的服务端升级使用TLS 1.2
方案二:虽Apple不建议,但可通过在 Info.plist 中声明,倒退回不安全的网络请求依然能让App访问指定http,甚至任意的http,
具体做法见gif图,示例Demo见 Demo1
![](http://cc.cocimg.com/api/uploads/20150702/1435822265899404.gif)
正如 Apple官方文档 所说
:
![](http://cc.cocimg.com/api/uploads/20150702/1435822281622676.png)
![](http://cc.cocimg.com/api/uploads/20150702/1435822338935133.png)
![](http://cc.cocimg.com/api/uploads/20150702/1435822328263241.png)
Info.plist 配置中的XML源码如下所示:
![](http://cc.cocimg.com/api/uploads/20150703/1435917529189966.jpg)
上面是比较严谨的做法,指定了能访问哪些特定的HTTP。当然也有暴力的做法: 彻底倒退回不安全的HTTP网络请求,能任意进行HTTP请求,比如你在开发一款浏览器App,或者你想偷懒,或者后台想偷懒,或者公司不给你升级服务器。。。
![](http://cc.cocimg.com/api/uploads/20150703/1435917543974085.jpg)
声明:目前Apple的官方文档并未提及如何在 Info.plist 配置,我将密切关注官方文档,如有提及,再来更新本文 .
Demo2_iOS9新特性_更灵活的后台定位
![](http://cc.cocimg.com/api/uploads/20150618/1434597211318052.jpg)
Demo:GitHub地址
【iOS9在定位的问题上,有一个坏消息一个好消息】坏消息:如果不适配iOS9,就不能偷偷在后台定位(不带蓝条,见图)!好消息:将允许出现这种场景:同一App中的多个location manager:一些只能在前台定位,另一些可在后台定位,并可随时开启或者关闭特定location manager的后台定位。
如果没有请求后台定位的权限,也是可以在后台定位的,不过会带蓝条:
![](http://cc.cocimg.com/api/uploads/20150618/1434597227111657.jpg)
如何偷偷在后台定位:请求后台定位权限:
但是如果照着这种方式尝试,而没有配置Info.plist,100%你的程序会崩溃掉,并报错:
要将 Info.plist 配置如下:
![](http://cc.cocimg.com/api/uploads/20150618/1434597259325009.png)
对应的 Info.plist 的XML源码是:
![](http://cc.cocimg.com/api/uploads/20150618/1434597401515306.png)
Bitcode(通俗解释:在线版安卓ART模式)
未来Watch应用须包含Bitcode,iOS不强制,但Xcode7默认会开启Bitcode。
如何适配?
方法一:更新library使包含Bitcode,否则会出现以下中的警告;
方法二:关闭Bitcode,方法见下图
在讨论之前,跟往常一样,先说下iOS程序猿们最关心的问题:
跟我有毛关系?需要我加班吗?!
首先咱们来看下业内对Apple这一做法的评论:
![](http://cc.cocimg.com/api/uploads/20150702/1435820983397536.jpg)
这是某社交App上讨论,看来业内还是吐槽声和肯定声同在。
结论是:
跟你很有关系,加班吧,少年!
书归正传【严肃脸】,我们正式讨论下 WHAT,WHY,HOW:
WHAT(什么是SSL/TLS?跟HTTP和HTTPS有什么关系)
WHY(以前的HTTP不是也能用吗?为什么要用SSL/TLS,闲得慌?!Apple是不是又在反人类?)
HOW(如何适配?---弱弱地问下:加班要多久?)
WHAT(什么是SSL/TLS?跟HTTP和HTTPS有什么关系)
跟往常一样,先说结论:
“TLS1.0”之于“SSL3.1”,犹“公元2015”之于“民国104”,或者是“一千克”之于“一公斤”,或者是“半斤”之于“八两”:称呼不同,但意思相同。
SSL 3.0版本之后的迭代版本被重新命名为TLS 1.0,
也就是说:
常用的是下面这些:
SSL 2.0
SSL 3.0
TLS 1.0 (SSL 3.1)
TLS 1.1 (SSL 3.1)
TLS 1.2 (SSL 3.1)
那为什么标题是“使用HTTPS”而没有提及SSL和TLS什么事? 要理解这个,要看下一个公式:
![](http://cc.cocimg.com/api/uploads/20150702/1435821042510658.png)
打个比方:如果原来的 HTTP 是塑料水管,容易被戳破;那么如今新设计的 HTTPS 就像是在原有的塑料水管之外,再包一层金属水管。一来,原有的塑料水管照样运行;二来,用金属加固了之后,不容易被戳破。
目前,应用最广泛的是TLS 1.0,接下来是SSL 3.0。但是,主流浏览器都已经实现了TLS 1.2的支持。
Apple让你的HTTP采用SSL/TLS协议,就是让你从HTTP转到HTTPS
WHY(以前的HTTP不是也能用吗?为什么要用SSL/TLS,闲得慌?!Apple是不是又在反人类?)
不使用SSL/TLS的HTTP通信,就是不加密的通信!
所有信息明文传播,带来了三大风险:
窃听风险(eavesdropping):第三方可以获知通信内容。
篡改风险(tampering):第三方可以修改通信内容。
冒充风险(pretending):第三方可以冒充他人身份参与通信。
SSL/TLS协议是为了解决这三大风险而设计的,希望达到:
所有信息都是加密传播,第三方无法窃听。
具有校验机制,一旦被篡改,通信双方会立刻发现。
配备身份证书,防止身份被冒充。
HOW(如何适配?---弱弱地问下:加班要多久?)
正如文章开头所说:
TLS 1.2 协议 强制增强数据访问安全 系统 Foundation 框架下的相关网络请求,将不再默认使用 Http 等不安全的网络协议,而默认采用 TLS 1.2。服务器因此需要更新,以解析相关数据。如不更新,可通过在 Info.plist 中声明,倒退回不安全的网络请求。
方案一:立即让公司的服务端升级使用TLS 1.2
方案二:虽Apple不建议,但可通过在 Info.plist 中声明,倒退回不安全的网络请求依然能让App访问指定http,甚至任意的http,
具体做法见gif图,示例Demo见 Demo1
![](http://cc.cocimg.com/api/uploads/20150702/1435822265899404.gif)
正如 Apple官方文档 所说
:
![](http://cc.cocimg.com/api/uploads/20150702/1435822281622676.png)
![](http://cc.cocimg.com/api/uploads/20150702/1435822338935133.png)
![](http://cc.cocimg.com/api/uploads/20150702/1435822328263241.png)
Info.plist 配置中的XML源码如下所示:
![](http://cc.cocimg.com/api/uploads/20150703/1435917529189966.jpg)
上面是比较严谨的做法,指定了能访问哪些特定的HTTP。当然也有暴力的做法: 彻底倒退回不安全的HTTP网络请求,能任意进行HTTP请求,比如你在开发一款浏览器App,或者你想偷懒,或者后台想偷懒,或者公司不给你升级服务器。。。
![](http://cc.cocimg.com/api/uploads/20150703/1435917543974085.jpg)
声明:目前Apple的官方文档并未提及如何在 Info.plist 配置,我将密切关注官方文档,如有提及,再来更新本文 .
Demo2_iOS9新特性_更灵活的后台定位
![](http://cc.cocimg.com/api/uploads/20150618/1434597211318052.jpg)
Demo:GitHub地址
【iOS9在定位的问题上,有一个坏消息一个好消息】坏消息:如果不适配iOS9,就不能偷偷在后台定位(不带蓝条,见图)!好消息:将允许出现这种场景:同一App中的多个location manager:一些只能在前台定位,另一些可在后台定位,并可随时开启或者关闭特定location manager的后台定位。
如果没有请求后台定位的权限,也是可以在后台定位的,不过会带蓝条:
![](http://cc.cocimg.com/api/uploads/20150618/1434597227111657.jpg)
如何偷偷在后台定位:请求后台定位权限:
![](http://cc.cocimg.com/api/uploads/20150618/1434597259325009.png)
对应的 Info.plist 的XML源码是:
![](http://cc.cocimg.com/api/uploads/20150618/1434597401515306.png)
Bitcode(通俗解释:在线版安卓ART模式)
未来Watch应用须包含Bitcode,iOS不强制,但Xcode7默认会开启Bitcode。
如何适配?
方法一:更新library使包含Bitcode,否则会出现以下中的警告;
![](http://cc.cocimg.com/api/uploads/20150702/1435823630902983.gif)
相关文章推荐
- iOS学习笔记38-新浪微博错误代码详解
- iOS - 沙盒机制
- 【指导】iOS代码静态检查 -- clang format (+ git pre-commit hook + jenkins)
- objc_getClass
- iOS学习笔记——麻麻再也不担心我不会算tableviewcell的行高了
- ios 开发中,对静态库 .a,.framework的一点思考
- iOS ---视图切换
- 《iOS总结》25种性能/内存优化常用方法
- ios 自定义键盘
- iOS企业版打包 发布在线安装包 plist
- iOS开发-常用第三方开源框架介绍
- IOS开发Git在Xcode开发环境下的使用
- iOS提交新版本报错error itms-90049
- 《iOS总结》strong和weak
- iOS各种调试技巧豪华套餐
- iOS: ARC和非ARC下使用Block属性的问题
- iOS9 升级设置
- iOS:点击按钮或者手势控制界面左右滑动
- IOS开发 百度地图添加Annotation,并修改图标。
- iOS开发中Certificates,Identifiers&Profiles各种证书配置文件总结