iOS 16.4 - macOS 13.3 開發者向更新快報

iOS 16.4 - macOS 13.3 開發者向更新快報
Photo by Penfer / Unsplash

2023年2月17日凌晨Apple推送了iOS 16.4和macOS 13.3 Developer Beta[1],這裡主要快速講一下我覺得比較有意思的Safari Web Extension、SwiftUI和Passkeys and Authentication Services的更新。

Safari Web Extension

三個更新:

這堆content script API終於有了,可以面向新版drop polyfill了。好不好用我不知道,晚點去試試。對於GreaseMonkey-compatible的user script插件來說挺重要的,polyfill因為實作上用很多hack,並不是特別靠譜,尤其是script執行時間點這一塊。

SwiftUI

照慣例修復了一堆行為bug,主要集中在去年的新Navigation API上。iOS上有一些ScrollView相關的更改,macOS上auxiliary scene、Window和List有一些行為調整去符合AppKit的行為,有用到的話需要注意一下。

iOS 16.2 / macOS 13.1 Table棄用了一些type check性能有問題的initializer,現在這版已經直接移除了。

最大的更新是.sheet.popover

這些presentation上的更新使得SwiftUI的sheet和popover的可定製性終於齊平了前年(!)WWDC21上UIKit UIPresentationController獲得的可定製性[2]。WWDC22的時候SwiftUI sheet只放出了detent,當時讓我覺得有點奇怪,現在看來估計是比較咕。

由於為了做某種特定UI效果,寫SwiftUI會用到很多workaround,這些bug的修復通常也會導致一部分workaround失效。SwiftUI還在快速成長期,我們並不確切知道哪些是intended behavior,哪些是bug。我預計這種混亂還會持續至少一年的時間。Navigation API上的行為改變還沒有影響到商業專案,目前為了相容性我們用的還是NavigationBackport,沒有使用Apple自己的實作。

Passkeys and Authentication Services

  • com.apple.developer.web-browser entitlement的瀏覽器app上,WKWebView現在獲得了Passkey自動填充的能力,會好用很多。
  • 新增AuthorizationControllerWebAuthenticationSession等來給SwiftUI提供更原生的SSO能力。

對我來說,這次更新補上了很多去年WWDC願望清單裡的東西。額外的,WWDC22上用來demo的Food Truck app終於也作為sample code發了出來[3],會是比較重要的參考。

還有一點值得提一下的就是iOS Beta Profiles的棄用。自iOS 16.4起,未來Developer Beta和Public Beta都需要登入有資格的Apple ID後在系統更新裡獲取,意味著更新測試版系統的門檻提高了。

References

  1. iOS & iPadOS 16.4 Beta Release Notes & macOS Ventura 13.3 Beta Release Notes
  2. Customize and resize sheets in UIKit, 10063, WWDC21
  3. Food Truck: Building a SwiftUI multiplatform app