iOS9變化筆記

這里將介紹下我們?nèi)粘i_發(fā)一些從iOS8過度到iOS9給我們帶來的一些變化,及解決方法。

原文鏈接

信息收集

language:zh-Hans(iOS8) ——> zh-Hans-CN(iOS9)

所有的進程列表都獲取不到了

App Transport Security

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

1、在Info.plist中添加NSAppTransportSecurity類型Dictionary,在NSAppTransportSecurity下添加NSAllowsArbitraryLoads,Boolean為YES。

2、直接使用CFNetwork做網(wǎng)絡請求,ASIHTTPRequest就是基于CFNetwotk做的封裝,如果有需求的同學可以看看ASI里面的源碼,如果某個時間段你又想要使用HTTPS的話,ASI對SSL/TSL的證書驗證有點問題,證書驗證還得自己封裝一下才行。剛才我說道,ATS是蘋果針對與NSURL這一層做的封裝,所以我們使用CFNetwork或者更底層做網(wǎng)絡請求的話是不受ATS限制的。

移除了discoveryd DNS解析服務

iPhone升級到iOS8后WiFi有時候會有問題,特別是Mac升級到OS X Yosemite后,時而電腦休眠喚醒唬就連不上WiFi,有時候還突然掉線,經(jīng)常要手動去關(guān)閉WiFi在重新連接,這是因為蘋果到了OS X Yosemite系統(tǒng)后,把之前的mDNSResponder換成了discoveryd DNS。iOS9和OS X Yosemite10.4后mDNSResponder又回來了。

mDNSResponder: 蘋果以前一直使用控制DNS和Bonjour服務的一種進程。

discoveryd:OS X Yosemite后蘋果新出的一種進程。

App Thinning

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

App Thinning主要有三個機制:

1、Slicing: 開發(fā)者把App安裝包上傳到AppStore后,Apple服務會自動對安裝包切割為不同的應用變體(App variant), 當用戶下載安裝包時,系統(tǒng)會根據(jù)設(shè)備型號下載安裝對應的單個應用變體。

2、On-Demand Resources: ORD(隨需資源)是指開發(fā)者對資源添加標簽上傳后,系統(tǒng)會根據(jù)App運行的情況,動態(tài)下載并加載所需資源,而在存儲空間不足時,自動刪除這類資源。

3、Bitcode:開啟Bitcode編譯后,可以使得開發(fā)者上傳App時只需上傳Intermediate Representation(中間件),而非最終的可執(zhí)行二進制文件。 在用戶下載App之前,AppStore會自動編譯中間件,產(chǎn)生設(shè)備所需的執(zhí)行文件供用戶下載安裝。

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

選擇項目——>點擊Target——>點擊Build Setttings——>搜索欄里搜bitcode——>把Enable Bitcode對應的Yes改成No。

啟用Bitcode編譯機制,需要注意以下幾點:

1、如果應用開啟Bitcode,那么其集成的其他第三方庫也需要是Bitcode編譯的包才能真正進行Bitcode編譯

2、開啟Bitcode編譯后,編譯產(chǎn)生的.app體積會變大(中間代碼,不是用戶下載的包),且.dSYM文件不能用來崩潰日志的符號化(用戶下載的包是Apple服務重新編譯產(chǎn)生的,有產(chǎn)生新的符號文件),使用dSYM來收集Crash日志的同學得注意了。

3、通過Archive方式上傳AppStore的包,可以在Xcode的Organizer工具中下載對應安裝包的新的符號文件

后臺定位

iOS9后蘋果為了對保障用戶的地理位置的隱私對App請求后臺定位有了權(quán)限設(shè)置,則需要多加一些代碼。如果不適配iOS9,就不能偷偷在后臺定位,如果沒有后臺定位的權(quán)限也是可以在后臺定位的,只是會出現(xiàn)藍條。

開啟后臺定位功能:locationManager.allowsBackgroundLocationUpdates = YES;

locationManager是CLLocationManager的對象,用來管理整個定位的。

重點:配置info.plist,添加一個Required background modes,Array類型的,然后在Required background modes里面Item 0對應的Value設(shè)置為App registers for location updates,這樣就解決了iOS9后臺定位出現(xiàn)藍條的問題了。

UI Testing

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

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

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

2、在setUp()里啟動應用XCUIApplication().launch()

3、新建一個方法test開頭的,在里面獲取應用let app = XCUIApplication()

4、的到let app = XCUIApplication(),app.buttons[“View Detail”].tap()?。buttons是當前這個界面的所有按鈕的集合,[]里面寫按鈕的名字,tap()就是執(zhí)行這個按鈕所對應的方法,可以是網(wǎng)絡請求、界面跳轉(zhuǎn)等等。

URL scheme

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

配置info.plist,添加一個LSApplicationQueriesSchemes,Array類型的,然后在LSApplicationQueriesSchemes的Item里面添加urlscheme就行了,urlscheme是任意一個字符串,就是你自己需要使用的urlscheme,iOS9 URL scheme白名單適配就完成了。

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

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

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

解決方法:

1、Build Settings ——>Build Options——>Debug Information Format

2、Debug下的DWARF with dsYM File改成DWARF

3、Release下的還是之前默認的DWARF with dsYM File不變

參考資料:

iOS9AdaptationTips 、iOS9學習系列 、iOS9-day-by-day

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,362評論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,577評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 178,486評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,852評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,600評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,944評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,944評論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,108評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,652評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,385評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,616評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,111評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,798評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,205評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,537評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,334評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,570評論 2 379

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

  • 很可能你的應用是與一個支持HTTPS傳輸數(shù)據(jù)的服務器交互,但是并沒有使用TLS 1.2或更高。在這種情況下,你定義...
    Www劉閱讀 3,098評論 0 5
  • iOS9程序員需要知道的 從iOS8過渡到iOS9出現(xiàn)了一些需要注意的問題下面就我知道或者搜集到的知識列出來以供參...
    aSnail閱讀 580評論 0 2
  • 碰過你之后碰誰都覺得自己骯臟,觸及不到你就渴望去流浪去逃亡,愛得太荒唐。無情的人兒啊你為何張望,昨天的纏綿你今天就...
    陳澤坤閱讀 1,842評論 72 46
  • 又是一年初夏時,又是一年離別季。 拉薩二高2017屆高三畢業(yè)生即將帶著燦爛的笑容離開美麗的校園,開始新...
    陌生人沐沐閱讀 1,201評論 0 13
  • 1.SBDoc SBDoc是一個商業(yè)化開源產(chǎn)品,完全免費。無論你是前端工程師,還是后端工程師,接口永遠都是兩者交互...
    七百年前閱讀 202評論 0 1