本文主要簡(jiǎn)述一下WWDC 2017開發(fā)者會(huì)議一些開發(fā)者須知的重點(diǎn)。
新增框架
一:Core ML
主要功能:負(fù)責(zé)簡(jiǎn)化和集成機(jī)器學(xué)習(xí)的颠猴。
詳 細(xì):Core ML 在背后驅(qū)動(dòng)了 iOS 的視覺識(shí)別的 Vision 框架和 Foundation 中的語義分析相關(guān) API。普通開發(fā)者可以從這些高層的 API 中直接獲益愕把,比如人臉圖片或者文字識(shí)別等嵌灰。這部分內(nèi)容在以前版本的 SDK 中也存在,不過在 iOS 11 SDK 中它們被集中到了新的框架中础浮,并將一些更具體和底層的控制開放出來帆调。比如你可以使用 Vision 中的高層接口,但是同時(shí)指定底層所使用的模型豆同。這給 iOS 的計(jì)算機(jī)視覺帶來了新的可能番刊。
二:ARKit
主要功能:用來創(chuàng)建增強(qiáng)現(xiàn)實(shí) (AR) 應(yīng)用的 ARKit。
詳 細(xì):iOS SDK 11 中 Apple 給開發(fā)者影锈,特別是 AR 相關(guān)的開發(fā)者帶來了一個(gè)很棒的禮物芹务,那就是 ARKit。ARKit 極大降低了普通開發(fā)者玩 AR 的門檻鸭廷,也是 Apple 現(xiàn)階段用來抗衡 VR 的選項(xiàng)枣抱。可以暢想一下更多類似 Pokémon Go 的 AR 游戲 (結(jié)合實(shí)境的虛擬寵物什么的大概是最容易想到的) 能在 ARKit 和 SceneKit 的幫助下面世辆床,甚至在 iPad Pro 現(xiàn)有技能上做像是 AR 電影這樣能全方位展示的多媒體可能也不再是單純的夢(mèng)想佳晶。而與之相應(yīng)的,是一套并不很復(fù)雜的 API讼载。涉及的 View 幾乎是作為 SceneKit 的延伸轿秧,再加上在真實(shí)世界的定為也已經(jīng)由系統(tǒng)幫助處理中跌,開發(fā)者需要做的大抵就是將虛擬物體放在屏幕的合適位置,并讓物體之間互動(dòng)淤刃。而利用 Core ML 來對(duì)相機(jī)內(nèi)的實(shí)際物體進(jìn)行識(shí)別和交互晒他,可以說也讓各類特效的相機(jī)或者攝影 app 充滿了想像空間。
功能改動(dòng)和新加
一:Xcode編輯器和編譯器
詳細(xì):逸贾。Xcode 9 中編輯器進(jìn)行了重寫陨仅,支持了對(duì) Swift 代碼的重構(gòu) (雖然還很基礎(chǔ)),將 VCS 提到了更重要的位置铝侵,并添加了 GitHub 集成灼伤,可以進(jìn)行同局域網(wǎng)的無線部署和調(diào)試。
二:Named Color
詳細(xì):現(xiàn)在你可以在 xcassets 里添加顏色咪鲜,然后在代碼或者 IB 中引用這個(gè)顏色了狐赡。大概是這樣的:
使用 IB 來構(gòu)建 UI 的時(shí)候,一個(gè)很頭疼的事情就是設(shè)計(jì)師表示我們要不換個(gè)主題色疟丙。你很可能需要到處尋找這個(gè)顏色進(jìn)行替換颖侄。但是現(xiàn)在你只需要在 xcassets 里改一下,就能反應(yīng)到 IB 中的所有地方了享郊。
其他值得注意的變更
拖拽 - 很標(biāo)準(zhǔn)的一套 iOS API览祖,不出意外地,iOS 系統(tǒng)幫助我們處理了絕大部分工作炊琉,開發(fā)者幾乎只需要處理結(jié)果展蒂。UITextView 和 UITextField 原生支持拖拽,UICollectionView 和 UITableView 的拖拽有一系列專用的 delegate 來表明拖拽的發(fā)生和結(jié)束苔咪。而你也可以對(duì)任意 UIView 子類定義拖拽行為锰悼。和 mac 上的拖拽不同,iOS 的拖拽充分尊重了多點(diǎn)觸控的屏幕团赏,所以可能你需要對(duì)一次多個(gè)的拖拽行為做些特別處理箕般。
FileProvider 和 FileProviderUI - 提供一套類似 Files app 的界面,讓你可以獲取用戶設(shè)備上或者云端的文件舔清。相信會(huì)成為以后文檔相關(guān)類 app 的標(biāo)配隘世。
不再支持 32 位 app - 雖然在 beta 1 中依然可以運(yùn)行 32 位 app,但是 Apple 明確指出了將在后續(xù)的 iOS 11 beta 中取消支持鸠踪。所以如果你想讓自己的程序運(yùn)行在 iOS 11 的設(shè)備上,進(jìn)行 64 位的重新編譯是必須步驟复斥。
DeviceCheck - 每天要用廣告 ID 追蹤用戶的開發(fā)者現(xiàn)在有了更好地選擇 (當(dāng)然前提是用來做正經(jīng)事兒)营密。DeviceCheck 允許你通過你的服務(wù)器與 Apple 服務(wù)器通訊,并為單個(gè)設(shè)備設(shè)置兩個(gè) bit 的數(shù)據(jù)目锭。簡(jiǎn)單說评汰,你在設(shè)備上用 DeviceCheck API 生成一個(gè) token纷捞,然后將這個(gè) token 發(fā)給自己的服務(wù)器,再由自己的服務(wù)器與 Apple 的 API 進(jìn)行通訊被去,來更新或者查詢?cè)撛O(shè)備的值主儡。這兩個(gè) bit 的數(shù)據(jù)用來追蹤用戶比如是否已經(jīng)領(lǐng)取獎(jiǎng)勵(lì)這類信息。
PDFKit - 這是一個(gè)在 macOS 上已經(jīng)長(zhǎng)期存在的框架惨缆,但卻在 iOS 上姍姍來遲糜值。你可以使用這個(gè)框架顯示和操作 pdf 文件。
IdentityLookup - 可以自己開發(fā)一個(gè) app extension 來攔截系統(tǒng) SMS 和 MMS 的信息坯墨。系統(tǒng)的信息 app 在接到未知的人的短信時(shí)寂汇,會(huì)詢問所有開啟的過濾擴(kuò)展,如果擴(kuò)展表示該消息應(yīng)當(dāng)被攔截捣染,那么這則信息將不會(huì)傳遞給你骄瓣。擴(kuò)展有機(jī)會(huì)訪問到事先指定的 server 來進(jìn)行判斷 (所以說你可以光明正大地獲取用戶短信內(nèi)容了,不過當(dāng)然考慮到隱私耍攘,這些訪問都是匿名加密的榕栏,Apple 也禁止這類擴(kuò)展在 container 里進(jìn)行寫入)。
Core NFC - 在 iPhone 7 和 iPhone 7 Plus 上提供基礎(chǔ)的近場(chǎng)通訊讀取功能蕾各“谴牛看起來很 promising,只要你有合適的 NFC 標(biāo)簽示损,手機(jī)就可以進(jìn)行讀取渗磅。但是考慮到無法后臺(tái)常駐,實(shí)用性就打了折扣检访。不過筆者不是很熟這塊始鱼,也許能有更合適的場(chǎng)景也未可知。
Auto Fill - 從 iCloud Keychain 中獲取密碼脆贵,然后自動(dòng)填充的功能現(xiàn)在開放給第三方開發(fā)者了医清。UITextInputTraits 的 textContentType 中添加了 username 和 password,對(duì)適合的 text view 或者 text field 的 content type 進(jìn)行配置卖氨,就可以在要求輸入用戶名密碼時(shí)獲取鍵盤上方的自動(dòng)填充会烙,幫助用戶快速登錄。