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

Read more

有過嗎

有過嗎

小時候有過一隻棉花兔子,張開雙臂穿著粉色毛衣,底裡是沙子好讓牠站起來。 隨著我長大牠越來越髒,白色逐漸變成灰色,但在書桌上牠是我應付作業時最好的朋友。被強迫做什麼事情時候的小朋友是很恐怖的:做作業時他們會用鉛筆、原子筆在牆面、桌子用盡全力留下記號,會用尺子插進任何縫隙當作槓桿,會把漆木上一絲絲因陽光照射裂開的隙縫擴開,把貼在家具上的膠合板撕下來。唯獨這隻小兔子,牠只是在不可避免的鉛筆屑裡逐漸變灰。 我是兔年出生的孩子,我和這隻兔子心心相惜。 自幼兒園結束之後我就不被允許帶著牠上學。上小學前的那個晚上,父母很晚才睡覺,點著一盞檯燈整理各種東西,不知道是整理思緒還是各種證明文件。我被要求面朝窗簾躺著,目的是要我快快睡著,明天要去新的地方見到新的同學。窗簾上投射著父母的身影,我身邊的背包裡裝著全新的文具。我鼓起勇氣但是小聲喃喃地說: 「我能不能把小兔子帶上。」 父母似乎沒有聽到,也許沒有聽到是好事。 多少個寒暑假之後,搬到新家,在新的地方,又是嶄新的書包裝著嶄新的文具。我躺在貌似屬於我自己的一間房間裡略有焦慮,不知道明天將面對什麼樣的新同學。這時候我突然想起小兔子,於是在

A road intersection at night.

故鄉夏夜涼如水

父親駕車帶我穿過繁華到陌生的故鄉街道。 我們都一言不發。父親在幾個電台間來回切換,在亞運賽事和陽光下的泡沫中選擇了Plan C:十年前買來塞進汽車CD機後再也沒拿出來過的《西方古典樂原汁演繹(金碟)》。十年後正是這張「金碟」讓我在Apple Music Classical上聽起了古典樂。 銀泰城前的兒童遊樂場已經拆掉,換成了並沒有人打球的籃球場,掛有「你好亞運」的橫幅;曾經這座小城市最中心的廣播電視塔風光不再,改叫「融媒體中心」,塔頂的三色環也不再亮起,夜空中這棟大樓唯一亮起的是5層一塊小小的LED燈牌,「美妝修甲微信同號」。 上車前在有一搭沒一搭的聊天中我得到關鍵信息:小時候我視為家的那套房子已經賣掉了。我於是想起母親在我上次回家時與一名房產仲介並不愉快充滿張力的對話。母親討論房屋時的語氣讓我想起電話對面的仲介——房屋只是一種會過期的財產。 換來的錢一部分在小縣城裡購買了一套比較小的新房,另一部分成為每一次回家需要催促我安家落戶購置新房的理由。父母告訴我,那套故鄉新房是孝敬長輩的;而奶奶說,父親考慮起退休之後回到縣城,和自己少時夥伴們一起。 去看了剛裝修完的新房