1. 程式人生 > Android開發 >WWDC 2020 Day 1:iOS 開發者速遞

WWDC 2020 Day 1:iOS 開發者速遞

Hello,不知道大家昨天有沒有熬夜看完 WWDC 呢?是不是跟小健一樣,發現是個錄播覺得有點不過癮哈。有一說一,蘋果對於疫情之下的活動安排還是費了不少心思的,這次的活動在 Apple Park 閉門舉辦,讓我們能從內部一窺未來感十足的飛碟型的大樓,加上不同以往的舞臺和串聯形式我想應該還是給每個人留下了深刻的印象。你是否記得這次片頭的星星點點?當鏡頭拉近,發現原來這些點點燈光是世界上各個角落、無數的開發者拿著 MBP 開發的場景,你是否和我一樣也感動不已?

可是感動不能當飯吃,生活還是要繼續,當你帶著熬夜看完 WWDC 的黑眼圈去上班,你的老闆從你背後拍拍你的肩膀,問道:這次 WWDC 有啥新東西可以用到我們的 App 上的時候。我想以下這些內容是值得你瞭解的。

iOS 14 桌面小元件 Widgets

iOS 14 為我們帶來了遲到的桌面小元件,支援各種尺寸,甚至可以把多個疊在一起。遲到了那麼久,美其名曰是因為覺得之前的 UI 技術都太耗電,覺得這個功能得結合 SwiftUI 來做,有一定道理,我姑且信了吧。大局已定,我們需要基於 WidgetKit 和 SwiftUI 開發桌面小元件,在 Widget 需要更新的時候,更新的 SwiftUI 的狀態會被 Archive 起來,在使用者能看到的合適時機被更新到桌面上。

說是這麼說,但是我有點擔心 Widget 狂熱愛好者手機電量夠不夠用。不過各大 App 應該都會跟進,而不會放棄這個那麼顯眼的入口的吧。

從今年開始,蘋果對 Swift 和 Swift UI only 的框架投入進一步加大,抱著 OC 不放的大廠可以重新考慮起來了,抱著 OC 不放的開發者也重新考慮一下未來的技術方向到底是哪裡了。我曾經面試過一個開發者,由於大廠還停留在 OC 上,所以不考慮學習 Swift,這種務實精神還真令人感動。

言歸正傳,SwiftUI 作為未來統領蘋果五個平臺的 UI 框架,在今年值得開發者更多的投入。謝天謝地,去年趕鴨子上架的 SwiftUI 今年並沒有被推翻重做,蘋果號稱 API 上是隻增不改的,所以去年寫的程式碼都是相容的。這些增加的 API 有的非常關鍵,比如LazyVStack,解決了大頁面記憶體消耗過大等問題,另一方面,蘋果推廣的策略從去年的部分檢視用 SwiftUI 編寫,到今年提供更多的平臺相關的 SwiftUI 元件,從區域性到整體、逐步替換的策略是十分明顯的。

iOS 14 小程式:App Clip

不知道張小龍是不是也熬夜在看 WWDC,看到這一部分有沒有默默點起一支菸呢?傳說中的蘋果官方小程式出現了。

蘋果的小程式是這麼玩的:

首先,根據預先填寫的 metadata 生成如上圖的頁面,在這個頁面彈出的時候,默默幫你下載個小程式本體(不能超過10MB)。 其次,觸發這個頁面的途徑有兩個,一個是通過 NFC,另一個是通過掃碼,長這樣:

對於 NFC 直接觸發下載這條鏈路我是有擔心的,因為在使用者沒有感知的時候會觸發下載,我想這個應該能關閉的。

iPadOS 14

一方面,iPadOS 做得更桌面,比如側邊欄,以及全域性搜尋。 另一方面,圍繞著 Apple Pencil 講故事,這次支援了文字識別,以及筆記文字的識別和選中。

macOS 11: Big Sur

macOS 終於升級大版本號了!這次 macOS 11 也有個霸氣的名字叫大瑟爾。這次的改動除了介面設計上和 iOS 更加靠攏外,支援 ARM 架構才是配擁有 macOS 11 姓名的最主要的原因。但是聰明的蘋果通篇沒用 ARM 架構這麼技術和乾癟的名字,而是給它起名 Apple Silicon。

完成 macOS ARM 化後,蘋果所有的平臺都是 ARM 架構 的了。這個改變對於蘋果來說具有戰略意義,意味著蘋果對於整個軟硬生態的完全掌控。不僅僅是CPU,對於自有的GPU、人工智慧晶片、安全加密等硬體模組可以有更好的整合,iPad 上硬體的積累可以惠及 Mac 產品線。

夢想是美好的,過程卻不是一蹴而就的。因為當前的桌面軟體都是基於 Intel 架構的,二進位制不相容的,蘋果幾板斧來解決這個問題。

  1. 與微軟這樣級別的合作伙伴合作,在 WWDC 之前完成把 Office 這樣複雜的套件,在 ARM 架構上重新編譯。
  2. 開發 Rosetta 2 這樣的轉譯工具。讓 Intel 架構的存量桌面軟體不經修改,就可以在 ARM 的 Mac 上跑起來(執行前轉譯)。
  3. iOS 的存量軟體是個寶庫,既然都是 ARM 架構了,那麼允許在 Mac App Store 上直接下載執行 iOS 軟體吧。還記得 iOS 13 的時候讓你們 Adopt UIScene API 支援多屏嗎?說是為了 iPad 支援多屏,其實醉翁之意不在酒,支援多屏的 App 最終是為讓 它更適配 macOS。
  4. 去年公佈的 Catalyst(使用 iOS API 編譯成 macOS App)有了上面紮實的運用。但是為了同時支援 Intel 架構的存量 Mac,這個遷移還是需要手動做一做才能覆蓋兩個架構。

對於我們開發者來說,統一成 ARM 架構是有好處的,意味著我們模擬器版本的 iOS App 也可以是 ARM 的了。

結語

WWDC 2020 才剛剛開始,我們一起期待接下來的議程。