WWDC17: iOS 11 SDK 新特性

摘自喵神博客:https://onevcat.com/2017/06/ios-11-sdk/

wwdc-2017

新增框架
新加入 SDK 的大的框架有兩個,分別是負責簡化和集成機器學習的 Core ML 和用來創(chuàng)建增強現(xiàn)實 (AR) 應(yīng)用的 ARKit。

Core ML
自從 AlphaGo 出現(xiàn)以來,深度學習毫無疑問成了行業(yè)熱點。而 Google 也在去年就轉(zhuǎn)變 Mobile-first 到 AI-first 的戰(zhàn)略??梢哉f一線的互聯(lián)網(wǎng)企業(yè)幾乎都在押寶 AI,目前看來機器學習,特別是深度學習是最有希望的一條道路。

如果你不是很熟悉機器學習的話,我想我可以在這里“僭越”地做一些簡介。你可以先把機器學習的模型看作一個黑盒函數(shù),你給定一些輸入 (可能是一段文字,或者一張圖片),這個函數(shù)會給出特定的輸出 (比如這段文字中的人名地名,或者圖片中出現(xiàn)的商店名牌等)。一開始這個模型可能非常粗糙,完全不能給出正確的結(jié)果,但是你可以使用大量已有的數(shù)據(jù)和正確的結(jié)果,來對模型進行訓練,甚至改進。在所使用的模型足夠優(yōu)化,以及訓練量足夠大的情況下,這個黑盒模型將不僅對訓練數(shù)據(jù)有較高的準確率,也往往能對未知的實際輸入給出正確的返回。這樣的模型就是一個訓練好的可以實際使用的模型。

對機器學習模型的訓練是一項很重的工作,Core ML 所扮演的角色更多的是將已經(jīng)訓練好的模型轉(zhuǎn)換為 iOS 可以理解的形式,并且將新的數(shù)據(jù)“喂給”模型,獲取輸出。抽象問題和創(chuàng)建模型雖然并不難,但是對模型的改進和訓練可以說是值得研究一輩子的事情,這篇文章的讀者可能也不太會對此感冒。好在 Apple 提供了一系列的工具用來將各類機器學習模型轉(zhuǎn)換為 Core ML 可以理解的形式。籍此,你就可以輕松地在你的 iOS app 里使用前人訓練出的模型。這在以前可能會需要你自己去尋找模型,然后寫一些 C++ 的代碼來跨平臺調(diào)用,而且難以利用 iOS 設(shè)備的 GPU 性能和 Metal (除非你自己寫一些 shader 來進行矩陣運算)。Core ML 將使用模型的門檻降低了很多。
Core ML 在背后驅(qū)動了 iOS 的視覺識別的 Vision 框架和 Foundation 中的語義分析相關(guān) API。普通開發(fā)者可以從這些高層的 API 中直接獲益,比如人臉圖片或者文字識別等。這部分內(nèi)容在以前版本的 SDK 中也存在,不過在 iOS 11 SDK 中它們被集中到了新的框架中,并將一些更具體和底層的控制開放出來。比如你可以使用 Vision 中的高層接口,但是同時指定底層所使用的模型。這給 iOS 的計算機視覺帶來了新的可能。
Google 或者 Samsung 在 Android AI 上的努力,大多是在自帶的應(yīng)用中集成服務(wù)。相比起來,Apple 基于對自己生態(tài)和硬件的控制,將更多的選擇權(quán)交給了第三方開發(fā)者。

ARKit
Keynote 上的 AR 的演示可以說是唯一的亮點了。iOS SDK 11 中 Apple 給開發(fā)者,特別是 AR 相關(guān)的開發(fā)者帶來了一個很棒的禮物,那就是 ARKit。AR 可以說并非什么新技術(shù),像是 Pokémon Go 這樣的游戲也驗證了 AR 在游戲上的潛力。不過除了 IP 和新鮮感之外,個人認為 Pokémon Go 并沒有資格代表 AR 技術(shù)的潛力?,F(xiàn)場的演示像我們展示了一種可能,粗略看來,ARKit 利用單鏡頭和陀螺儀,在對平面的識別和虛擬物體的穩(wěn)定上做得相當出色。幾乎可以肯定,那么不做最早,只做最好的 Apple 似乎在這一刻回到了舞臺上
ARKit 極大降低了普通開發(fā)者玩 AR 的門檻,也是 Apple 現(xiàn)階段用來抗衡 VR 的選項??梢詴诚胍幌赂囝愃?Pokémon Go 的 AR 游戲 (結(jié)合實境的虛擬寵物什么的大概是最容易想到的) 能在 ARKit 和 SceneKit 的幫助下面世,甚至在 iPad Pro 現(xiàn)有技能上做像是 AR 電影這樣能全方位展示的多媒體可能也不再是單純的夢想。
而與之相應(yīng)的,是一套并不很復雜的 API。涉及的 View 幾乎是作為 SceneKit 的延伸,再加上在真實世界的定為也已經(jīng)由系統(tǒng)幫助處理,開發(fā)者需要做的大抵就是將虛擬物體放在屏幕的合適位置,并讓物體之間互動。而利用 Core ML 來對相機內(nèi)的實際物體進行識別和交互,可以說也讓各類特效的相機或者攝影 app 充滿了想像空間。

值得注意的變更:

剩下的都是些小變化了,簡單瀏覽了下,把我覺得值得一提的列舉出來,并附上參考的鏈接。
拖拽 - 很標準的一套 iOS API,不出意外地,iOS 系統(tǒng)幫助我們處理了絕大部分工作,開發(fā)者幾乎只需要處理結(jié)果。UITextView
和 UITextField
原生支持拖拽,UICollectionView
和UITableView
的拖拽有一系列專用的 delegate 來表明拖拽的發(fā)生和結(jié)束。而你也可以對任意UIView
子類定義拖拽行為。和 mac 上的拖拽不同,iOS 的拖拽充分尊重了多點觸控的屏幕,所以可能你需要對一次多個的拖拽行為做些特別處理。
FileProvider 和 FileProviderUI - 提供一套類似 Files app 的界面,讓你可以獲取用戶設(shè)備上或者云端的文件。相信會成為以后文檔相關(guān)類 app 的標配。
不再支持 32 位 app - 雖然在 beta 1 中依然可以運行 32 位 app,但是 Apple 明確指出了將在后續(xù)的 iOS 11 beta 中取消支持。所以如果你想讓自己的程序運行在 iOS 11 的設(shè)備上,進行 64 位的重新編譯是必須步驟。
DeviceCheck - 每天要用廣告 ID 追蹤用戶的開發(fā)者現(xiàn)在有了更好地選擇 (當然前提是用來做正經(jīng)事兒)。DeviceCheck 允許你通過你的服務(wù)器與 Apple 服務(wù)器通訊,并為單個設(shè)備設(shè)置兩個 bit 的數(shù)據(jù)。簡單說,你在設(shè)備上用 DeviceCheck API 生成一個 token,然后將這個 token 發(fā)給自己的服務(wù)器,再由自己的服務(wù)器與 Apple 的 API 進行通訊,來更新或者查詢該設(shè)備的值。這兩個 bit 的數(shù)據(jù)用來追蹤用戶比如是否已經(jīng)領(lǐng)取獎勵這類信息。
PDFKit - 這是一個在 macOS 上已經(jīng)長期存在的框架,但卻在 iOS 上姍姍來遲。你可以使用這個框架顯示和操作 pdf 文件。
IdentityLookup - 可以自己開發(fā)一個 app extension 來攔截系統(tǒng) SMS 和 MMS 的信息。系統(tǒng)的信息 app 在接到未知的人的短信時,會詢問所有開啟的過濾擴展,如果擴展表示該消息應(yīng)當被攔截,那么這則信息將不會傳遞給你。擴展有機會訪問到事先指定的 server 來進行判斷 (所以說你可以光明正大地獲取用戶短信內(nèi)容了,不過當然考慮到隱私,這些訪問都是匿名加密的,Apple 也禁止這類擴展在 container 里進行寫入)。
Core NFC - 在 iPhone 7 和 iPhone 7 Plus 上提供基礎(chǔ)的近場通訊讀取功能??雌饋砗?promising,只要你有合適的 NFC 標簽,手機就可以進行讀取。但是考慮到無法后臺常駐,實用性就打了折扣。不過筆者不是很熟這塊,也許能有更合適的場景也未可知。
Auto Fill - 從 iCloud Keychain 中獲取密碼,然后自動填充的功能現(xiàn)在開放給第三方開發(fā)者了。UITextInputTraits 的 textContentType 中添加了 username
和 password
,對適合的 text view 或者 text field 的 content type 進行配置,就可以在要求輸入用戶名密碼時獲取鍵盤上方的自動填充,幫助用戶快速登錄。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容