本文譯自:Apple Watch: WatchKit App Essentials
WatchKit 應用程序架構
上一篇文章簡單介紹了 WatchKit,在開發 Apple Watch 應用程序時由兩部分構成:WatchKit 應用程序和 WatchKit 擴展。
WatchKit 應用程序是一個運行在 Apple Watch 中的可執行文件。它包括 storyboard 和渲染屏幕時所需的資源文件。
WatchKit 擴展則是運行在 iPhone 上的可執行文件。包括管理應用程序界面的邏輯代碼,以及處理用戶的交互操作。
為了程序界面的正常使用,這兩部分需要一起運行。用戶與應用程序交互的典型步驟如下:
用戶與 WatchKit 應用程序交互。
WatchKit 應用程序分析交互情況,並選擇將被管理的 storyboard。
WatchKit 與 iPhone 通訊,以運行 WatchKit 擴展。
WatchKit 擴展初始化並創建需要提供給 WatchKit 應用程序 storyboard 使用的對象。
Storyboard 根據 WatchKit 擴展創建的對象,生成 scene,並將其顯示到 Apple Watch 中。
WatchKit 應用程序和 WatchKit 將會共享一些信息,直到用戶停止使用 WatchKit 應用程序。此時,iOS 將使 WatchKit 擴展休眠,直到有新的用戶交互。
下面的這個圖演示了這個流程:
上圖中有個重要的概念就是 storyboard 響應用戶的操作並配置需要顯示的屏幕內容的方法。這歸功於 interface controller對象 (WKInterfaceController的實例),相當於 iOS 中的 view controller。
與 view controller 不同的是 interface controller 不管理屏幕中實際的 view,WatchKit 以透明的方式對 view 進行處理。一般,一個 WatchKit 應用程序會有多個 interface controller,用來顯示不同的數據類型,只不過同時只顯示一個罷了。
WatchKit 應用程序的生命周期
一個 WatchKit 應用程序的啟動方式有 3 種:
用戶點擊 Apple Watch 主屏幕上的圖標。
用戶與應用程序的 glance 交互。
用戶與通知交互。
上面的每種方式都將初始化 WatchKit 應用程序和 WatchKit 擴展。根據上面不同的啟動方式,WatchKit 會利用相應的 storyboard 加載 scene,並請求 WatchKit 擴展初始化相應的 interface controller。
下面的圖演示了相關過程:
如圖所示,在用戶界面中,interface controller 對象管理著相關交互。當用戶與 Apple Watch 上的應用程序交互時,WatchKit 擴展會運行。一旦用戶停止交互或者從程序中退出,iOS 將關閉當前的 interface controller,並休眠擴展。在用戶和 Apple Watch 之間,這樣的交互方式非常簡潔,interface controller 應該是輕量級的,並且快速的執行任務。
下面的圖演示了相關過程: