開發者所須要知道的 iOS 10 SDK 新特性

 

轉自:https://onevcat.com/2016/06/ios-10-sdk/ios

寫的很好啊。哈哈哈swift

總覽

距離 iPhone 橫空出世已通過去了 9 個年頭,iOS 的版本號也跨入了兩位數。在咱們回顧過去四五年 iOS 系統的發展的時候,難免感嘆變化速度之快,迭代週期之短。iOS 7 翻天覆地的全新設計,iOS 8 中 Size Classes 的出現,應用擴展,以及 Cloud Kit 的加入,iOS 9 裏的分屏多任務特性等等。Apple 近年都是在 WWDC 發佈新的系統和軟件,而後在秋季和冬季 (或者來年春季) 召開硬件產品的發佈會。WWDC 上每一項軟件的更新其實都預示了相應的硬件的方向,相信今年也不會例外。安全

對於開發者來講,好消息是 iOS 10 中並無加入太多內容。按照適配的需求,來年的 iOS 開發至少應該能夠從 iOS 8 甚至 iOS 9 開始,咱們將有時間對以前的版本特性進行更好的梳理,消化和實踐。相比於開疆擴土,iOS 10 更專一的是對現有內容的改進,以彌補以前迅速發展所留下的一些問題,這其實正是 Apple 當下所亟需作的事情。服務器

生態整合與 Extension 開發

在 iOS 10 裏 Apple 延續了前幾年的策略,那就是進行平臺整合。全世界如今沒有另一家廠商在掌握了包括桌面,移動到穿戴的一系列硬件設備的同時,還掌控了相應的從操做系統,到應用軟件,再到軟件商店這樣一套完整的佈局。Apple 顯然也很是明白這個優點意味着什麼。因此近年來 Apple 一直強調平臺整合,若是你的應用可以同時在 iOS,watchOS 以及 macOS 上工做的話,毫無疑問將會更容易吸引用戶以及 Apple 的喜好。網絡

另一點則是各個應用之間的整合和交互。不難發現,隨着近年來 extension 開發的興起,Apple 逐漸在從 app 是「用戶體驗的核心」這個理念中轉移,變爲用戶應該也能夠在通知中心,桌面掛件或者手錶這樣的地方完成必要交互。而應用之間的交互在之前能夠說是 iOS 系統的禁區,可是去年隨着 Workflow 的成功,Apple 對於應用之間的交互有助於用戶生產力的提高有了清晰的認識。今年 SDK 中幾個重大更新其實都是圍繞這個主題來進行的。session

iOS 10 中,Apple 爲咱們添加了茫茫多 extension 的新模板,以致於在同事之間開玩笑都是咱們立刻就要丟掉 iOS app 開發者的工做,而轉變爲 iOS extension 開發者這樣了。新加入的擴展的種類和數量都足以說明使用應用擴展以及進行擴展開發在從此 iOS 開發中的重要地位。若是你對擴展開發還一無所知,能夠先看看這篇入門文章,裏面簡單介紹了關於擴展的基本概念,不一樣開發 target 之間代碼共享的方式,以及通用的擴展開發方法等。app

SiriKit

Siri API 的開放天然是 iOS 10 SDK 中最激動人心也是亮眼的特性。SiriKit 爲咱們提供一全套從語音識別到代碼處理,最後向用戶展現結果的流程。Apple 加入了一套全新的框架 Intents.framework 來表示 Siri 獲取並解析的結果。你的應用須要提供一些關鍵字代表能夠接受相關輸入,而 Siri 擴展只須要監聽系統識別的用戶意圖 (intent),做出合適的響應,修改以及實際操做,最後經過 IntentsUI.framework 提供反饋。整個過程很是清晰明瞭,可是這也意味着開發者所能擁有的自由度有限。框架

在 iOS 10 中,咱們只能用 SiriKit 來作六類事情,分別是:編輯器

  • 語音和視頻通話
  • 發送消息
  • 發送或接收付款
  • 搜索照片
  • 約車
  • 管理健身

若是你的應用剛好正在處理這些領域的問題的話,添加 Intents Extension 的支持會是很棒的選擇。它將提升用戶使用你的應用的可能性,也能讓用戶在其餘像是地圖這樣的系統級應用中使用你的服務。工具

SiriKit 筆記 (待填坑)

User Notifications

通知中心向來是 iOS 上的兵家必爭之地。如何提供適時有效的通知,每每決定了用戶活躍和留存的可能性。在 iOS 10 上,Apple 對通知進行了增強和革新。如今,爲了更好地處理和管理通知,和本地及推送通知相關的 API 被封裝到了全新的框架 UserNotifications.framework 中。在 iOS 10 中,開發者的服務器有機會在本地或者遠程通知發送給用戶以前再進行修改。

另外,在以前加入了 notification action 以及 text input 的基礎上,iOS 10 又新增了爲通知添加音頻,圖片,甚至視頻的功能。如今,你的通知不只僅是提醒用戶回到應用的入口,更成爲了一個展現應用內容,向用戶傳遞多媒體信息的窗口。

User Notifications 筆記 - 活久見的重構 - iOS 10 UserNotifications 框架解析

iMessage Apps

Message 應用大概是 Apple 在宣傳 iOS 10 時着力最多的部分了。雖然新的貼紙包,自動轉換顏文字,發送全屏效果等功能都很酷炫,可是對於程序開發者來講,可能仍是對 iMessage Apps 更感興趣。Xcode 8 中,Apple 在 iOS Application 模板中添加了一類新的項目類型,Messages Application。同時,模擬器甚至還開發了新的雙人對話模式,以供開發者調試這類 app。

雖然名義上是獨立 app,但實際上工做的依然是一個 extension。在該擴展中,Messages.framework 將承擔與系統的 message 界面交互的主要職責。你經過提供一個自定義的 View Controller,來獲取用戶在使用你的 message app 時進行對話的上下文,以及發送接收等操做,並作出合適的響應。這個擴展在用來進行直接在 Message 應用中一些自定義共享會很好玩。可是鑑於 Apple 暫時沒有打算將 Message.app 跨平臺的緣由,可能也註定了這隻會是一種補充,而沒法成爲主流。

iMessage Apps 筆記 (待填坑)

IDE 和工具改進

除了整合平臺戰略思想下的一些 SDK 改變,今年和 iOS 開發者相關的更多的是開發工具的進步和革新了。

Xcode 8

Xcode 8 展示出了不少有意思的新特性,好比更強大的 View Debugging,能夠幫助咱們追查內存引用問題的 Memory Debugging 等。這些工具十分強大,也將幫助咱們在開發過程當中及早發現問題,而不要將它們帶入在最終產品中去。

在 app 簽名方面,Apple 終於意識到了他們在 Xcode 7 中所犯得錯誤。我想可能不止一我的被證書和描述文件出問題時的 "Fix Issue" 按鈕坑過。這個按鈕不只不會修正問題,反而會直接註銷現有的開發者證書,而後「自做主張」地從新申請。大多數狀況下,這讓事情變得更加糟糕。特別是對於新加入的開發者,他們並不理解 Apple 的證書系統,錯誤的操做和處置,每每讓開發環境變得不可挽回。Xcode 8 中,同一個開發者賬號如今容許多個開發證書,而徹底重作的 app 簽名系統也足夠好用,而且避免了誤操做的可能性。在兼顧自動配置的基礎上,也爲大型項目和複雜的 CI 環境提供了足夠靈活的配置空間,這絕對值得點贊。

另外 Xcode 終於提供了進行代碼編輯器擴展的能力。如今開發者能夠建立 XCSourceEditorExtension 來對 Xcode 的功能進行擴展了,在沒有文檔幫助和官方支持的狀況下摸索着爲 Xcode 製做插件的歷史也即將結束。

Xcode 8 筆記 (待填坑)

Swift 3

Swift 開源已通過去半年時間。在 Swift 2.2 中咱們已經看到了開源的社區力量對語言產生的深入影響,而在 Swift 3 中這一影響的效果將更加明顯。

最大的變化在於 Foundation 框架的從新導入,可能過一段時間再回頭看的話,這將標誌着 Swift 與 Objective-C 完全分家。Foundation 框架中的 API 如今以更符合 Swift 的方式被導入到語言中。大致來講,這些變化包括去除 NS 前綴,將絕大部分 class 轉換爲 struct (雖然底層仍是 copy-on-write 的引用實現,能夠參看ReferenceConvertible 協議的內容),去掉 API 中重複的語義等。若是在當前你還能看出 Swift 和 Objective-C 在使用 Foundation 或者說開發 app 時同根同源的話,Swift 3 正式發佈後可能狀況會大不相同。

因爲引用類型向值類型的轉換,也將致使咱們在使用 Swift 開發時的思考方式發生變化。以往的 Foundation 框架中類型的可變性是由不可變類型和它的可變類型版本 (好比 NSData 和 NSMutableData) 來進行區分的。而在 Swift 3 中,通常來講將只有做爲結構體的不可變類型 (好比 Data),對於這類結構體的改變,將會是更安全的基於寫時複製的行爲,而再也不是原來可變對象那樣的危險的內存操做。這在不少時候除了保證數據共享時的安全性之外,內部的引用特性也保證了調用速度。實際上,由於減小了沒必要要的複製 (好比根據一個不可變對象建立相應的可變對象),實際上經過 Swift 3 的 API 使用 Foundation 的速度將比原來更快!

關於 Swift 3 的更多內容,我會在個人《Swifter - 100 個 Swift 必備 tips》一書中經過補充章節的方式進行說明。同時,該書現有的 Swift 2 相關的描述和示例也會按照 Swift 3 的語法規範和特性進行更新,以適應最新版本。您能夠訪問 swifter.tips 獲取這本書的更多相關內容。

Apple 生態和其餘

另外影響比較重大消息是,在 iOS 9 引入的 ATS 將在來年更加嚴格。2017 年起,新提交的 app 將再也不被容許進行 http 的訪問,全部的 app 內的網絡請求必須加密,經過 https 完成。因此若是你家 app 的服務器或者某些訪問頁面仍是 http 的話,須要儘早過分到 https。

另外,watchOS 3 和 tvOS 也有一些新的內容。其中最重要的當屬 watchOS 中可使用 SceneKit 和 SpriteKit。雖然這兩個框架本意是作遊戲,可是 watch 的小屏幕和低性能可能並不足以支撐咱們在這樣一個受限平臺很好的做品。可是這兩個框架能夠爲交互乏味的 watchOS 提供很好的動畫效果的補充,可能會是它們在 watchOS 上更合適的用途。

最後,OS X 更名爲 macOS,有些媒體和開發者將其解讀爲去喬布斯化,其實我更傾向於這是一種強迫症和完美主義的基本需求。無論名字如何改變,Apple 在 iOS,macOS,watchOS 和 tvOS 這四個產品線上的佈局已經完成,整個生態如今看來也還十分健康。Apple 在用戶權益和隱私上的重視,以及像是在 https 上的推進,無疑都是這個時代前進的動力。

總結

像往年同樣,我會在以後逐漸補充 session 筆記,經過一些簡單的例子說明相關的新增框架的使用方式。屆時你也能夠在這篇文章中找到相關連接,或者經過訂閱的方式來確保在第一時間獲取相關內容 (訂閱時請不要使用 QQ 郵箱,會沒法收到郵件)。不過直接訪問 Apple 開發者網站 WWDC 相關的內容會是獲取這些知識更快的方式。

Happy WWDC. Happy Coding!

相關文章
相關標籤/搜索