你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS 10 SDK 新特性

iOS 10 SDK 新特性

編輯:IOS開發綜合

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

\

總覽

距離 iPhone 橫空出世已經過去了 9 個年頭,iOS 的版本號也跨入了兩位數。在我們回顧過去四五年 iOS 系統的發展的時候,不免感歎變化速度之快,迭代周期之短。vcat.com/2013/06/developer-should-know-about-ios7/" target="_blank">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 中幾個重大更新其實都是圍繞這個主題來進行的。

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

\

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 筆記 (待填坑)

    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!

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved