2025 年 7 月 31 日

Health&Fitness Maps&Location SwiftUI&UI Frameworks watchOS WWDC WWDC25

【深度解析】watchOS 26 重大更新:從底層架構到情境化智慧的全面演進

已複製到剪貼板


重新定義手腕上的互動邊界

作為長期在 Apple 平台深耕的開發者,我們見證了 watchOS 從最初單純的 iPhone 延伸螢幕,演進為具備獨立運算能力的穿戴裝置。然而,watchOS 26 的發布標誌著一個關鍵的範式轉移(Paradigm Shift):它正從一個「被動」等待使用者開啟 App 的容器,轉向為一個具備高度情境感知(Context-aware)與主動預測能力的智慧中樞。

WWDC 2025:What’s new in watchOS 26
WWDC 2025:What’s new in watchOS 26

這次更新不僅是視覺語彙的翻新,更是開發者戰略思維的重構。透過系統底層架構的 arm64 遷移與 RelevanceKit 的引入,Apple 正在大幅降低 App 的存取門檻(Accessibility),並強化其在特定情境下的存在感。對於資深開發者而言,這不僅是新功能的堆疊,更是對「何謂手錶應用」的重新定義。本文將從底層架構到上層 API,深度剖析 watchOS 26 的四大支柱。

核心基礎:Liquid Glass 設計語彙與 arm64 架構遷移的實戰警示

系統的穩定性與一致性始於底層。watchOS 26 在視覺與硬體指令集層次都迎來了自 watchOS 10 以來最徹底的變革。

設計系統:Liquid Glass 的自動適配

全新的「Liquid Glass」設計語彙調整了材質(Materials)與控制元件樣式。凡是針對 watchOS 10 或更新版本建置的 App,系統都會自動套用新的工具列與控制項風格。此外,Icon Composer 成為了視覺更新的核心:它不僅確保手錶原生 App 的圖示符合新美學,連 iPhone 轉發至手錶的通知圖示也會同步更新。

畫面展示 watchOS 26 具備 Liquid Glass 半透明毛玻璃質感的工具列
WWDC 2025|What’s new in watchOS 26:Liquid Glass

架構躍進:arm64 遷移背後的技術債

Apple Watch Series 9 與 Ultra 2 正式轉向 arm64 架構。這雖然提升了能源效率,但也為遺留程式碼(Legacy Code)帶來了挑戰。

技術評論:

從開發者的角度看,這不只是重新編譯的問題。遷移至 64 位元指標(Pointer size)意味著記憶體佈局的改變。資深開發者必須警惕 指標運算(Pointer-based math)與資料類型的差異。例如,NSInteger 在不同架構下的長度變化,若未謹慎處理,可能導致序列化失敗或溢位問題。如果你仍持有從 32 位元時代遺留下來的底層 C/C++ 函式庫,現在是清償這筆技術債的最後通牒。

實作建議

在 Xcode 標靶中啟用 Standard Architectures,並在實機上徹底測試浮點數(Float)與整數(Int)的精確度行為。

Xcode 截圖|Build Settings:展示 Standard Architectures 設定為 "Apple Watch architectures" (arm64, arm64_32, armv7k)
Xcode Build Settings:Standard Architectures 設定為 "Apple Watch architectures"(arm64, arm64_32, armv7k)

互動革命:讓 App 功能無處不在的「控制元件 Controls」

watchOS 26 引入的「控制元件」徹底模糊了 App 的邊界。功能不再隱藏於數位錶冠後的 App 列表,而是滲透進控制中心、智慧堆疊,甚至是 Ultra 的動作按鈕。

跨平台連動與 UX 的雙面刃

  1. iPhone 遠端執行:即使沒有 Watch App,使用者也能將 iPhone App 的控制元件加到手錶上。但這是一個 UX 陷阱,由於動作是在 iPhone 上「遠端」觸發,在連線不穩或 iPhone 處於休眠深度喚醒時,會產生明顯的延遲感
  2. 原生擴展:具備原生 Watch App 的開發者應致力於實作手錶端的控制元件。這需要讓 ControlWidget 同時符合 AppIntentControlConfigurationAppIntentControlValueProvider 協議,以確保動作能本地執行

決策分析:該選擇哪種呈現方式?

  • 控制元件 Controls:動作導向。適合「開關」、「啟動計時器」
  • 小工具 Widgets:資訊導向。適合「查看天氣」、「下個行程」
  • 即時活動 Live Activities:過程導向。適合「外送進度」、「賽事比分」

WWDC25:「人們可以從你的 iPhone App 將控制元件添加到 Apple Watch 的系統空間,即使你沒有 Watch App。」

// 實作具備 ValueProvider 的可配置控制元件
struct BeachMeditationControl: ControlWidget {
    var body: some ControlWidgetConfiguration {
        AppIntentControlConfiguration(
            kind: "com.example.beach.meditation",
            intent: StartMeditationIntent.self
        ) { configuration in
            // 透過 Provider 提供狀態
            ControlWidgetButton(action: configuration.intent) {
                Label("開始冥想", systemImage: "sparkles")
                Text(configuration.playOceanSounds ? "播放海浪聲" : "靜音模式")
            }
        }
    }
}

獨立性強化:MapKit 的全面升級(Phone-free 戰略)

對於 Ultra 使用者而言,脫離 iPhone 的獨立體驗是核心驅動力。watchOS 26 的 MapKit 補齊了最後一塊拼圖。

開發者現在能直接在手錶端搜尋 POI(興趣點),獲取駕車、步行或騎行路徑,並透過 SwiftUI 的 Overlay(覆蓋層)功能將路徑繪製在圖資上。由於 API 與 iOS 幾乎一致,開發者能以極低的成本將原本屬於手機的導航邏輯遷移至手錶。這不僅是 API 的補完,更是對戶外運動與獨立導航類 App 的重大利多。

MapKit 覆蓋層:展示 Apple Watch 螢幕上,一條亮藍色的步行導航路徑線條精確覆蓋在街道地圖上,路口標示清晰可見
WWDC25|What’s new in watchOS 26:MapKit

智慧感知:RelevanceKit 如何驅動動態預測引擎

智慧堆疊(Smart Stack)在 watchOS 26 中演變為由 RelevanceKit 驅動的動態預測引擎,解決了「資訊過載」與「顯示冗餘」的痛點。

相關性與冗餘處理

RelevanceKit 支援日期、睡眠、健身與地點。特別是新的 POI 類別,讓 App 可以在使用者抵達「海灘」或「超市」時自動浮現。

  • 多卡片機制:當 10:00 AM 同時有三個會議時,系統不再截斷資訊,而是建議三張獨立卡片
  • associatedKind 的戰略價值:資深開發者必須設定此屬性。若不設定,當「相關性小工具」觸發時,使用者會看到靜態小工具與動態卡片並存,這會嚴重損害 App 的專業感與智慧感

開發者必備:三種預覽模式的區分

  1. relevanceEntries:用於 UI 開發階段。快速檢查不同文字長度下,Widget View 的排版是否完美
  2. relevance:用於 Entry 方法開發階段。驗證特定 Intent 是否能正確生成對應的 Entry
  3. RelevanceProvider:最終檢查。模擬多個事件(如 5 個事件)在真實智慧堆疊中的排序與顯示行為
// 實作 RelevanceEntriesProvider 與冗餘關聯
func relevance(for configuration: BeachEventIntent) -> WidgetRelevance? {
    // 檢查 POI 支援,若類別不支援會回傳 nil
    guard let beachContext = RelevantContext.location(category: .beach) else {
        return nil
    }
    
    let context = [beachContext, RelevantContext.date(configuration.eventDate)]
    return WidgetRelevance(context: context)
}

// 在 Widget 定義中使用 associatedKind 防止冗餘顯示
RelevanceConfiguration(provider: BeachProvider()) { entry in
    BeachWidgetView(entry: entry)
}
.associatedKind("com.example.beach.static_timeline")

即時同步:APNs 推播與 ClockKit 的終結

為了確保智慧資訊的時效性,watchOS 26 終於支援透過 APNs 遠端推播 直接更新 WidgetKit 數據。

技術評論:

這是一個強烈的信號:ClockKit 的時代已經結束。過去許多開發者留在 ClockKit 是為了那唯一的推播更新優勢,現在 WidgetKit 已全面統治。若你的 App 仍在使用 Complication 進行 ClockKit 開發,現在是遷移的最後窗口,否則將無法利用 RelevanceKit 帶來的系統級建議機制。

watchOS 開發的新篇章

watchOS 26 代表了 Apple 願景的轉向:從「被動顯示器」演進為「主動感知器」。透過 arm64 的架構鞏固、控制元件的空間擴展,以及 RelevanceKit 的情境決策,開發者的核心任務已從「刻畫介面」轉向「定義情境」。

延伸思考:

在系統代為決策、主動推薦資訊的趨勢下,你的 App 該如何利用這些 API,在不增加認知負擔的前提下,重新定義其在使用者生活情境中的角色? 是作為一個安靜的守護者,還是在關鍵時刻遞上功能的智慧助手?這將決定你的 App 在 2025 年後的生存空間。

分享文章

已複製到剪貼板

追蹤網站

透過 Google 追蹤

超級感謝

關於 XcodeProject

XcodeProject 創立於 2023,致力於協助開發者探索 Apple 的創新世界,學習在 iOS、iPadOS、macOS、tvOS、visionOS 與 watchOS 上開發 App,發現眾多技術與框架,讓開發者獲得更多能力。


Contacts

Ricky Chuang

XcodeProject

RickyChuang.xcodeproj@gmail.com

XcodeProject 聯絡

contact.xcodeproj@gmail.com

XcodeProject 的最新文章