iOS9中的新坑

iOS9程序員需要知道的

從iOS8過渡到iOS9出現(xiàn)了一些需要注意的問題下面就我知道或者搜集到的知識(shí)列出來以供參考

App Transport Security(ATS)

iOS9和OS X El Capitan的一個(gè)新特性,App Transport Security 的目地是提高Apple 操作系統(tǒng)的安全性以及在此操作系統(tǒng)上運(yùn)行的任何應(yīng)用的安全性。ATS是蘋果針對(duì)與 NSURL這一層做的封裝,iOS9后ATS默認(rèn)是開啟的,即網(wǎng)絡(luò)傳輸需要使用HTTPS洽糟。如果想在iOS9后繼續(xù)使用HTTP的話,有兩條路可以走:

  • 在Info.plist中添加NSAppTransportSecurity類型Dictionary,在NSAppTransportSecurity下添加NSAllowsArbitraryLoads种蘸,Boolean為YES。
  • 直接使用CFNetwork做網(wǎng)絡(luò)請(qǐng)求竞膳,ASIHTTPRequest就是基于CFNetwotk做的封裝航瞭,如果有需求的同學(xué)可以看看ASI里面的源碼,如果某個(gè)時(shí)間段你又想要使用HTTPS的話坦辟,ASI對(duì)SSL/TSL的證書驗(yàn)證有點(diǎn)問題刊侯,證書驗(yàn)證還得自己封裝一下才行。剛才我說道锉走,ATS是蘋果針對(duì)與NSURL這一層做的封裝滨彻,所以我們使用CFNetwork或者更底層做網(wǎng)絡(luò)請(qǐng)求的話是不受ATS限制的藕届。

移除了discoveryd DNS解析服務(wù)

iPhone升級(jí)到iOS8后WiFi有時(shí)候會(huì)有問題,特別是Mac升級(jí)到OS X Yosemite后亭饵,時(shí)而電腦休眠喚醒唬就連不上WiFi休偶,有時(shí)候還突然掉線,經(jīng)常要手動(dòng)去關(guān)閉WiFi在重新連接辜羊,這是因?yàn)樘O果到了OS X Yosemite系統(tǒng)后椅贱,把之前的mDNSResponder換成了discoveryd DNS。iOS9和OS X Yosemite10.4后mDNSResponder又回來了只冻。

mDNSResponder: 蘋果以前一直使用控制DNS和Bonjour服務(wù)的一種進(jìn)程庇麦。

discoveryd:OS X Yosemite后蘋果新出的一種進(jìn)程。

App Thinning

App Thinning是一個(gè)關(guān)于節(jié)省iOS設(shè)備存儲(chǔ)空間的功能喜德,它可以讓iOS設(shè)備在安裝山橄、更新及運(yùn)行App等場(chǎng)景中僅下載所需的資源,減少App的占用空間舍悯,從而節(jié)省設(shè)備的存儲(chǔ)空間航棱。

App Thinning主要有三個(gè)機(jī)制:

  • Slicing: 開發(fā)者把App安裝包上傳到AppStore后,Apple服務(wù)會(huì)自動(dòng)對(duì)安裝包切割為不同的應(yīng)用變體(App variant)萌衬, 當(dāng)用戶下載安裝包時(shí)饮醇,系統(tǒng)會(huì)根據(jù)設(shè)備型號(hào)下載安裝對(duì)應(yīng)的單個(gè)應(yīng)用變體。

  • On-Demand Resources: ORD(隨需資源)是指開發(fā)者對(duì)資源添加標(biāo)簽上傳后秕豫,系統(tǒng)會(huì)根據(jù)App運(yùn)行的情況朴艰,動(dòng)態(tài)下載并加載所需資源,而在存儲(chǔ)空間不足時(shí)混移,自動(dòng)刪除這類資源祠墅。

  • Bitcode:開啟Bitcode編譯后,可以使得開發(fā)者上傳App時(shí)只需上傳Intermediate Representation(中間件)歌径,而非最終的可執(zhí)行二進(jìn)制文件毁嗦。 在用戶下載App之前,AppStore會(huì)自動(dòng)編譯中間件回铛,產(chǎn)生設(shè)備所需的執(zhí)行文件供用戶下載安裝狗准。

其中,Bitcode的機(jī)制可以支持動(dòng)態(tài)的進(jìn)行App Slicing茵肃,而對(duì)于Apple未來進(jìn)行硬件升級(jí)的措施腔长,此機(jī)制可以保證在開發(fā)者不重新發(fā)布版本的情況下而兼容新的設(shè)備。Xcode7默認(rèn)是開始了Bitcode免姿,如果不想使用可以手動(dòng)關(guān)閉Bitcode:

選擇項(xiàng)目——>點(diǎn)擊Target——>點(diǎn)擊Build Setttings——>搜索欄里搜bitcode——>把Enable Bitcode對(duì)應(yīng)的Yes改成No饼酿。

啟用Bitcode編譯機(jī)制榕酒,需要注意以下幾點(diǎn):

  • 如果應(yīng)用開啟Bitcode胚膊,那么其集成的其他第三方庫也需要是Bitcode編譯的包才能真正進(jìn)行Bitcode編譯

  • 開啟Bitcode編譯后故俐,編譯產(chǎn)生的.app體積會(huì)變大(中間代碼,不是用戶下載的包)紊婉,且.dSYM文件不能用來崩潰日志的符號(hào)化(用戶下載的包是Apple服務(wù)重新編譯產(chǎn)生的药版,有產(chǎn)生新的符號(hào)文件),使用dSYM來收集Crash日志的同學(xué)得注意了喻犁。

  • 通過Archive方式上傳AppStore的包槽片,可以在Xcode的Organizer工具中下載對(duì)應(yīng)安裝包的新的符號(hào)文件

后臺(tái)定位

iOS9后蘋果為了對(duì)保障用戶的地理位置的隱私對(duì)App請(qǐng)求后臺(tái)定位有了權(quán)限設(shè)置,則需要多加一些代碼肢础。如果不適配iOS9还栓,就不能偷偷在后臺(tái)定位,如果沒有后臺(tái)定位的權(quán)限也是可以在后臺(tái)定位的传轰,只是會(huì)出現(xiàn)藍(lán)條剩盒。

開啟后臺(tái)定位功能:locationManager.allowsBackgroundLocationUpdates = YES;

locationManager是CLLocationManager的對(duì)象,用來管理整個(gè)定位的慨蛙。

重點(diǎn):配置info.plist辽聊,添加一個(gè)Required background modes,Array類型的期贫,然后在Required background modes里面Item 0對(duì)應(yīng)的Value設(shè)置為App registers for location updates跟匆,這樣就解決了iOS9后臺(tái)定位出現(xiàn)藍(lán)條的問題了。

UI Testing

Xcode7中蘋果引入了一種新的方式在應(yīng)用中進(jìn)行測(cè)試——UI Testting通砍,UI Testting允許我們找到UI元素與之交互玛臂,還能檢查屬性和狀態(tài)。UI Testting已經(jīng)完全集成進(jìn)了Xcode7的測(cè)試報(bào)告封孙,可以和單元測(cè)試一起執(zhí)行垢揩。使用起來跟之前Xcode5出來的XCTest差不多,Xcode bots提供對(duì)此的支持敛瓷,而且command line支持當(dāng)UI測(cè)試失敗時(shí)會(huì)立即發(fā)出通知叁巨。

可以參考Github上的Demo,步驟:

  • 在DemoTests.m里創(chuàng)建一個(gè)test開頭的方法

  • 在setUp()里啟動(dòng)應(yīng)用XCUIApplication().launch()

  • 新建一個(gè)方法test開頭的呐籽,在里面獲取應(yīng)用let app = XCUIApplication()

  • 的到let app = XCUIApplication()锋勺,app.buttons[“View Detail”].tap()?。buttons是當(dāng)前這個(gè)界面的所有按鈕的集合狡蝶,[]里面寫按鈕的名字庶橱,tap()就是執(zhí)行這個(gè)按鈕所對(duì)應(yīng)的方法,可以是網(wǎng)絡(luò)請(qǐng)求贪惹、界面跳轉(zhuǎn)等等苏章。

URL scheme

在iOS9中,如果使用URL scheme必須在”Info.plist”中將你要在外部調(diào)用的URL scheme列為白名單,否則不能使用枫绅。

配置info.plist泉孩,添加一個(gè)LSApplicationQueriesSchemes,Array類型的并淋,然后在LSApplicationQueriesSchemes的Item里面添加urlscheme就行了寓搬,urlscheme是任意一個(gè)字符串,就是你自己需要使用的urlscheme县耽,iOS9 URL scheme白名單適配就完成了句喷。

出現(xiàn)大量的警告

Xcode7后運(yùn)行以前的項(xiàng)目后出現(xiàn)大量的警告如:(null): warning: /var/folders/p4/z7zy68r92hd3p5ry5g2v3k_8rlwzzr/C/org.llvm.clang.dalmo/ModuleCache/1TXZDLI9N2EMV/Foundation-3DFYNEBRQSXST.pcm: No such file or directory。

作為一個(gè)有潔癖的我反正是不能忍兔毙,出現(xiàn)警告的大致原因跟我上面提到的開啟Bitcode唾琼,.dSYM文件不能用來符號(hào)化有關(guān),Xcode試圖去創(chuàng)建dSYM文件澎剥,但是你又不需要父叙。

解決方法:

  • Build Settings ——>Build Options——>Debug Information Format

  • Debug下的DWARF with dsYM File改成DWARF

  • Release下的還是之前默認(rèn)的DWARF with dsYM File不變

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市肴裙,隨后出現(xiàn)的幾起案子趾唱,更是在濱河造成了極大的恐慌,老刑警劉巖蜻懦,帶你破解...
    沈念sama閱讀 221,820評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件甜癞,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡宛乃,警方通過查閱死者的電腦和手機(jī)悠咱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來征炼,“玉大人析既,你說我怎么就攤上這事∽话拢” “怎么了眼坏?”我有些...
    開封第一講書人閱讀 168,324評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)酸些。 經(jīng)常有香客問我宰译,道長(zhǎng),這世上最難降的妖魔是什么魄懂? 我笑而不...
    開封第一講書人閱讀 59,714評(píng)論 1 297
  • 正文 為了忘掉前任沿侈,我火速辦了婚禮,結(jié)果婚禮上市栗,老公的妹妹穿的比我還像新娘缀拭。我一直安慰自己咳短,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評(píng)論 6 397
  • 文/花漫 我一把揭開白布蛛淋。 她就那樣靜靜地躺著咙好,像睡著了一般。 火紅的嫁衣襯著肌膚如雪铣鹏。 梳的紋絲不亂的頭發(fā)上敷扫,一...
    開封第一講書人閱讀 52,328評(píng)論 1 310
  • 那天哀蘑,我揣著相機(jī)與錄音诚卸,去河邊找鬼。 笑死绘迁,一個(gè)胖子當(dāng)著我的面吹牛合溺,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播缀台,決...
    沈念sama閱讀 40,897評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼棠赛,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了膛腐?” 一聲冷哼從身側(cè)響起睛约,我...
    開封第一講書人閱讀 39,804評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎哲身,沒想到半個(gè)月后辩涝,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,345評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡勘天,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評(píng)論 3 340
  • 正文 我和宋清朗相戀三年怔揩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片脯丝。...
    茶點(diǎn)故事閱讀 40,561評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡商膊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出宠进,到底是詐尸還是另有隱情晕拆,我是刑警寧澤,帶...
    沈念sama閱讀 36,238評(píng)論 5 350
  • 正文 年R本政府宣布材蹬,位于F島的核電站潦匈,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏赚导。R本人自食惡果不足惜茬缩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望吼旧。 院中可真熱鬧凰锡,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至勇哗,卻和暖如春昼扛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背欲诺。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工抄谐, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人扰法。 一個(gè)月前我還...
    沈念sama閱讀 48,983評(píng)論 3 376
  • 正文 我出身青樓蛹含,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親塞颁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子浦箱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評(píng)論 2 359

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

  • 很可能你的應(yīng)用是與一個(gè)支持HTTPS傳輸數(shù)據(jù)的服務(wù)器交互,但是并沒有使用TLS 1.2或更高祠锣。在這種情況下酷窥,你定義...
    Www劉閱讀 3,075評(píng)論 0 5
  • 這里將介紹下我們?nèi)粘i_發(fā)一些從iOS8過度到iOS9給我們帶來的一些變化,及解決方法伴网。 原文鏈接 信息收集 lan...
    潘柏信閱讀 1,501評(píng)論 1 11
  • 看著孩子們的試卷蓬推,有些心酸難過。孩子們平時(shí)都那么的乖是偷,可是分?jǐn)?shù)卻是這樣不盡如人意~分析一下:1.平時(shí)自己太懶拳氢,不夠...
    糖果老師199058閱讀 144評(píng)論 0 0
  • 在微博上看過一個(gè)話題馋评,一個(gè)你愛的,一個(gè)愛你的刺啦,二選一留特,你選哪個(gè)?于是我問最好的閨蜜心軟小姐玛瘸,她嘴角噙著一抹笑蜕青,無奈...
    沒有時(shí)光機(jī)的叮當(dāng)貓閱讀 558評(píng)論 5 7
  • 1、 如果你還能繼續(xù)糊渊,努力奔跑右核,在我身后,我一定奮不顧身來到你的身邊渺绒。 如果你還在尋找贺喝,踮腳張望菱鸥,相同城市,我一定...
    消失的書店閱讀 170評(píng)論 0 0