適配iOS9

摘自:

作者:ChenYilong(https://github.com/ChenYilong/iOS9AdaptationTips

http://www.cocoachina.com/ios/20150703/12392.html

Demo1_iOS9網(wǎng)絡(luò)適配_改用更安全的HTTPS

iOS9把所有的http請(qǐng)求都改為https了:iOS9系統(tǒng)發(fā)送的網(wǎng)絡(luò)請(qǐng)求將統(tǒng)一使用TLS 1.2 SSL租谈。采用TLS 1.2 協(xié)議,目的是 強(qiáng)制增強(qiáng)數(shù)據(jù)訪問(wèn)安全饥瓷,而且 系統(tǒng) Foundation 框架下的相關(guān)網(wǎng)絡(luò)請(qǐng)求氓奈,將不再默認(rèn)使用 Http 等不安全的網(wǎng)絡(luò)協(xié)議,而默認(rèn)采用 TLS 1.2蜓肆。服務(wù)器因此需要更新颜凯,以解析相關(guān)數(shù)據(jù)。如不更新仗扬,可通過(guò)在 Info.plist 中聲明症概,倒退回不安全的網(wǎng)絡(luò)請(qǐng)求。

在討論之前早芭,跟往常一樣彼城,先說(shuō)下iOS程序猿們最關(guān)心的問(wèn)題:

跟我有毛關(guān)系?需要我加班嗎退个?募壕!

首先咱們來(lái)看下業(yè)內(nèi)對(duì)Apple這一做法的評(píng)論:

這是某社交App上討論,看來(lái)業(yè)內(nèi)還是吐槽聲和肯定聲同在语盈。

結(jié)論是:

跟你很有關(guān)系舱馅,加班吧,少年刀荒!

書(shū)歸正傳【嚴(yán)肅臉】代嗤,我們正式討論下 WHAT,WHY缠借,HOW:

WHAT(什么是SSL/TLS资溃?跟HTTP和HTTPS有什么關(guān)系)

WHY(以前的HTTP不是也能用嗎?為什么要用SSL/TLS烈炭,閑得慌溶锭?!Apple是不是又在反人類(lèi)符隙?)

HOW(如何適配趴捅?---弱弱地問(wèn)下:加班要多久垫毙?)

WHAT(什么是SSL/TLS?跟HTTP和HTTPS有什么關(guān)系)

跟往常一樣拱绑,先說(shuō)結(jié)論:

1

HTTP+SSL/TLS+TCP?=?HTTPS

TLS 是 SSL 新的別稱(chēng)综芥。舉個(gè)例子:

“TLS1.0”之于“SSL3.1”,猶“公元2015”之于“民國(guó)104”猎拨,或者是“一千克”之于“一公斤”膀藐,或者是“半斤”之于“八兩”:稱(chēng)呼不同,但意思相同红省。

SSL 3.0版本之后的迭代版本被重新命名為T(mén)LS 1.0,

也就是說(shuō):

1

TLS?1.0?=?SSL?3.1

所以他們是一個(gè)東西额各,我們平常也經(jīng)常簡(jiǎn)單見(jiàn)到 “SSL/TLS” 這種說(shuō)法。

常用的是下面這些:

SSL 2.0

SSL 3.0

TLS 1.0 (SSL 3.1)

TLS 1.1 (SSL 3.1)

TLS 1.2 (SSL 3.1)

那為什么標(biāo)題是“使用HTTPS”而沒(méi)有提及SSL和TLS什么事吧恃? 要理解這個(gè)虾啦,要看下一個(gè)公式:

1

HTTP+SSL/TLS+TCP?=?HTTPS

打個(gè)比方:如果原來(lái)的 HTTP 是塑料水管,容易被戳破痕寓;那么如今新設(shè)計(jì)的 HTTPS 就像是在原有的塑料水管之外傲醉,再包一層金屬水管。一來(lái)呻率,原有的塑料水管照樣運(yùn)行硬毕;二來(lái),用金屬加固了之后礼仗,不容易被戳破吐咳。

目前,應(yīng)用最廣泛的是TLS 1.0藐守,接下來(lái)是SSL 3.0挪丢。但是蹂风,主流瀏覽器都已經(jīng)實(shí)現(xiàn)了TLS 1.2的支持卢厂。

Apple讓你的HTTP采用SSL/TLS協(xié)議,就是讓你從HTTP轉(zhuǎn)到HTTPS

WHY(以前的HTTP不是也能用嗎惠啄?為什么要用SSL/TLS慎恒,閑得慌?撵渡!Apple是不是又在反人類(lèi)融柬?)

不使用SSL/TLS的HTTP通信,就是不加密的通信趋距!

所有信息明文傳播粒氧,帶來(lái)了三大風(fēng)險(xiǎn):

竊聽(tīng)風(fēng)險(xiǎn)(eavesdropping):第三方可以獲知通信內(nèi)容。

篡改風(fēng)險(xiǎn)(tampering):第三方可以修改通信內(nèi)容节腐。

冒充風(fēng)險(xiǎn)(pretending):第三方可以冒充他人身份參與通信外盯。

SSL/TLS協(xié)議是為了解決這三大風(fēng)險(xiǎn)而設(shè)計(jì)的摘盆,希望達(dá)到:

所有信息都是加密傳播,第三方無(wú)法竊聽(tīng)饱苟。

具有校驗(yàn)機(jī)制孩擂,一旦被篡改,通信雙方會(huì)立刻發(fā)現(xiàn)箱熬。

配備身份證書(shū)类垦,防止身份被冒充。

HOW(如何適配城须?---弱弱地問(wèn)下:加班要多久蚤认?)

正如文章開(kāi)頭所說(shuō):

TLS 1.2 協(xié)議 強(qiáng)制增強(qiáng)數(shù)據(jù)訪問(wèn)安全 系統(tǒng) Foundation 框架下的相關(guān)網(wǎng)絡(luò)請(qǐng)求,將不再默認(rèn)使用 Http 等不安全的網(wǎng)絡(luò)協(xié)議酿傍,而默認(rèn)采用 TLS 1.2烙懦。服務(wù)器因此需要更新,以解析相關(guān)數(shù)據(jù)赤炒。如不更新氯析,可通過(guò)在 Info.plist 中聲明,倒退回不安全的網(wǎng)絡(luò)請(qǐng)求莺褒。

方案一:立即讓公司的服務(wù)端升級(jí)使用TLS 1.2

方案二:雖Apple不建議掩缓,但可通過(guò)在 Info.plist 中聲明,倒退回不安全的網(wǎng)絡(luò)請(qǐng)求依然能讓App訪問(wèn)指定http遵岩,甚至任意的http你辣,

具體做法見(jiàn)gif圖,示例Demo見(jiàn)Demo1

正如Apple官方文檔所說(shuō) :

Info.plist 配置中的XML源碼如下所示:

上面是比較嚴(yán)謹(jǐn)?shù)淖龇ǔ局矗付四茉L問(wèn)哪些特定的HTTP舍哄。當(dāng)然也有暴力的做法: 徹底倒退回不安全的HTTP網(wǎng)絡(luò)請(qǐng)求,能任意進(jìn)行HTTP請(qǐng)求誊锭,比如你在開(kāi)發(fā)一款瀏覽器App表悬,或者你想偷懶,或者后臺(tái)想偷懶丧靡,或者公司不給你升級(jí)服務(wù)器蟆沫。。温治。

聲明:目前Apple的官方文檔并未提及如何在 Info.plist 配置饭庞,我將密切關(guān)注官方文檔,如有提及熬荆,再來(lái)更新本文.

Demo2_iOS9新特性_更靈活的后臺(tái)定位

Demo:GitHub地址

【iOS9在定位的問(wèn)題上舟山,有一個(gè)壞消息一個(gè)好消息】壞消息:如果不適配iOS9,就不能偷偷在后臺(tái)定位(不帶藍(lán)條,見(jiàn)圖)累盗!好消息:將允許出現(xiàn)這種場(chǎng)景:同一App中的多個(gè)location manager:一些只能在前臺(tái)定位六孵,另一些可在后臺(tái)定位,并可隨時(shí)開(kāi)啟或者關(guān)閉特定location manager的后臺(tái)定位幅骄。

如果沒(méi)有請(qǐng)求后臺(tái)定位的權(quán)限劫窒,也是可以在后臺(tái)定位的,不過(guò)會(huì)帶藍(lán)條:

如何偷偷在后臺(tái)定位:請(qǐng)求后臺(tái)定位權(quán)限:

//?1.?實(shí)例化定位管理器

_locationManager?=?[[CLLocationManager?alloc]?init];

//?2.?設(shè)置代理

_locationManager.delegate?=?self;

//?3.?定位精度

[_locationManager?setDesiredAccuracy:kCLLocationAccuracyBest];

//?4.請(qǐng)求用戶(hù)權(quán)限:分為:?只在前臺(tái)開(kāi)啟定位?在后臺(tái)也可定位拆座,

//注意:建議只請(qǐng)求?和?中的一個(gè)主巍,如果兩個(gè)權(quán)限都需要,只請(qǐng)求?即可挪凑,

//??這樣的順序孕索,將導(dǎo)致bug:第一次啟動(dòng)程序后,系統(tǒng)將只請(qǐng)求?的權(quán)限躏碳,?的權(quán)限系統(tǒng)不會(huì)請(qǐng)求搞旭,只會(huì)在下一次啟動(dòng)應(yīng)用時(shí)請(qǐng)求?

if([[[UIDevice?currentDevice]?systemVersion]?floatValue]?>=?8)?{

//[_locationManager?requestWhenInUseAuthorization];//?只在前臺(tái)開(kāi)啟定位

[_locationManager?requestAlwaysAuthorization];//?在后臺(tái)也可定位

}

//?5.iOS9新特性:將允許出現(xiàn)這種場(chǎng)景:同一app中多個(gè)location?manager:一些只能在前臺(tái)定位,另一些可在后臺(tái)定位(并可隨時(shí)禁止其后臺(tái)定位)菇绵。

if([[[UIDevice?currentDevice]?systemVersion]?floatValue]?>=?9)?{

_locationManager.allowsBackgroundLocationUpdates?=?YES;

}

//?6.?更新用戶(hù)位置

[_locationManager?startUpdatingLocation];

但是如果照著這種方式嘗試肄渗,而沒(méi)有配置Info.plist,100%你的程序會(huì)崩潰掉咬最,并報(bào)錯(cuò):

1

***?Assertion?failurein-[CLLocationManager?setAllowsBackgroundLocationUpdates:],?/BuildRoot/Library/Caches/com.apple.xbs/Sources/CoreLocationFramework_Sim/CoreLocation-1808.1.5/Framework/CoreLocation/CLLocationManager.m:593

要將 Info.plist 配置如下:

對(duì)應(yīng)的 Info.plist 的XML源碼是:

Bitcode(通俗解釋?zhuān)涸诰€(xiàn)版安卓ART模式)

未來(lái)Watch應(yīng)用須包含Bitcode翎嫡,iOS不強(qiáng)制,但Xcode7默認(rèn)會(huì)開(kāi)啟Bitcode永乌。

如何適配惑申?

方法一:更新library使包含Bitcode,否則會(huì)出現(xiàn)以下中的警告翅雏;

1

(null):?URGENT:?all?bitcode?will?be?dropped?because'/Users/myname/Library/Mobile?Documents/com~apple~CloudDocs/foldername/appname/GoogleMobileAds.framework/GoogleMobileAds(GADSlot+AdEvents.o)'was?built?without?bitcode.?You?must?rebuild?itwithbitcode?enabled?(Xcode?setting?ENABLE_BITCODE),?obtain?an?updated?library?from?the?vendor,?or?disable?bitcodeforthistarget.?Note:?This?will?be?an?errorinthe?future.

方法二:關(guān)閉Bitcode圈驼,方法見(jiàn)下圖

更多信息,請(qǐng)移步bitcode 蘋(píng)果官方文檔

,和 WWDC 2015 Session 102: "Platforms State of the Union"

企業(yè)級(jí)分發(fā)

iOS9之前望几,企業(yè)級(jí)分發(fā)十分方便:點(diǎn)擊App出現(xiàn)“信任按鈕”绩脆,

iOS9以后,企業(yè)級(jí)分發(fā)ipa包將遭到與Mac上dmg安裝包一樣的待遇:默認(rèn)不能安裝橄妆,也不再出現(xiàn)“信任按鈕”

必須讓用戶(hù)進(jìn)行g(shù)if圖中的設(shè)置(相關(guān)Demo:https://github.com/ChenYilong/iOS9AdaptationTips/

URL scheme

在iOS9中衙伶,如果使用URL scheme必須在"Info.plist"中將你要在外部調(diào)用的URL scheme列為白名單祈坠,否則不能使用害碾。key叫做LSApplicationQueriesSchemes ,鍵值內(nèi)容是

1

LSApplicationQueriesSchemes?urlscheme?urlscheme2?urlscheme3?urlscheme4

推薦一篇博客:http://awkwardhare.com/post/121196006730/quick-take-on-ios-9-url-scheme-changes

其中最關(guān)鍵的是以下部分:

1

2If?you?call?the?“canOpenURL”?method?on?a?URL?that?is?notinyour?whitelist,?it?willreturn“NO”,?evenifthere?is?an?app?installed?that?has?registered?to?handlethisscheme.?A?“This?app?is?not?allowed?to?queryforscheme?xxx”?syslog?entry?will?appear.

If?you?call?the?“openURL”?method?on?a?URL?that?is?notinyour?whitelist,?it?will?fail?silently.?A?“This?app?is?not?allowed?to?queryforscheme?xxx”?syslog?entry?will?appear.

更多信息請(qǐng)移步:WWDC 2015 Session 703: "Privacy and Your App"時(shí)間在30:18左右

iPad適配Slide Over 和 Split View

【iPad適配Slide Over 和 Split View】 若想適配multi tasking特性赦拘,唯一的建議:棄純代碼慌随,改用storyboard、xib,縱觀蘋(píng)果WWDC所有Demo均是如此:

Mysteries of Auto Layout, Part 1

What's New in Storyboards

Implementing UI Designs in Interface Builder

Getting Started with Multitasking on iPad in iOS 9

Optimizing Your App for Multitasking on iPad in iOS

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末阁猜,一起剝皮案震驚了整個(gè)濱河市丸逸,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌剃袍,老刑警劉巖黄刚,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異民效,居然都是意外死亡憔维,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)畏邢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)业扒,“玉大人,你說(shuō)我怎么就攤上這事舒萎〕檀ⅲ” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵臂寝,是天一觀的道長(zhǎng)章鲤。 經(jīng)常有香客問(wèn)我,道長(zhǎng)咆贬,這世上最難降的妖魔是什么咏窿? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮素征,結(jié)果婚禮上集嵌,老公的妹妹穿的比我還像新娘。我一直安慰自己御毅,他們只是感情好根欧,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著端蛆,像睡著了一般凤粗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上今豆,一...
    開(kāi)封第一講書(shū)人閱讀 51,365評(píng)論 1 302
  • 那天嫌拣,我揣著相機(jī)與錄音,去河邊找鬼呆躲。 笑死异逐,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的插掂。 我是一名探鬼主播灰瞻,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼腥例,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了酝润?” 一聲冷哼從身側(cè)響起燎竖,我...
    開(kāi)封第一講書(shū)人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎要销,沒(méi)想到半個(gè)月后构回,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡疏咐,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年捐凭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片凳鬓。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡茁肠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出缩举,到底是詐尸還是另有隱情垦梆,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布仅孩,位于F島的核電站托猩,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏辽慕。R本人自食惡果不足惜京腥,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望溅蛉。 院中可真熱鬧公浪,春花似錦、人聲如沸船侧。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)镜撩。三九已至预柒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間袁梗,已是汗流浹背宜鸯。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留遮怜,地道東北人淋袖。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像奈泪,于是被迫代替她去往敵國(guó)和親适贸。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容