注意
如需 最新功能的概觀,請參閱 watchOS 3 簡介。
關於 watchOS
watchOS 應用程式解決方案有 3 個專案:
- Watch Extension – 包含監看式應用程式程式代碼的專案。
- 監看應用程式 – 包含使用者介面分鏡腳本和資源。
- iOS 父應用程式 – 此應用程式是一般的 i 電話 應用程式。 監看式應用程式和延伸模組會組合至 i 電話 應用程式,以傳遞至使用者的監看式。
在 watchOS 1 應用程式中,延伸模組中的程式代碼會在 i 電話 上執行 – Apple Watch 實際上是外部顯示器。 watchOS 2 和 3 應用程式完全在 Apple Watch 上執行。 下圖顯示這項差異:
無論以哪個版本的 watchOS 為目標,在 Visual Studio for Mac 的 Solution Pad 中,完整的解決方案看起來會像這樣:
watchOS 解決方案中的父應用程式是一般 iOS 應用程式。 這是方案中唯一在手機上可見的專案。 此應用程式的使用案例包括教學課程、系統管理畫面,以及仲介層篩選、快取等。不過,使用者可以安裝並執行監看式應用程式/擴充功能,而不需要開啟父應用程式,因此如果您需要父應用程式執行一次性初始化或管理,則必須將監看應用程式/擴充功能程序設計成告訴使用者。
雖然父應用程式會提供監看應用程式和擴充功能,但在不同的沙箱中執行。
在 watchOS 1 上,他們可以透過共用應用程式群組或靜態函WKInterfaceController.OpenParentApplication
式來共用數據,這會在父應用程式的 中觸發 UIApplicationDelegate.HandleWatchKitExtensionRequest
方法(請參閱使用父應用程式AppDelegate
)。
在 watchOS 2 或更新版本上,Watch 連線 ivity 架構會使用 類別來與父應用程式WCSession
通訊。
應用程式週期
在監看延伸模組中,會為每個分鏡腳本場景建立 類別的 WKInterfaceController
子類別。
這些 WKInterfaceController
類別與 iOS 程式設計中的物件類似 UIViewController
,但檢視的存取層級不同。
例如,您無法將控件動態新增至UI或重新建構UI。
不過,您可以隱藏和顯示控件,並透過某些控件變更其大小、透明度和外觀選項。
物件的生命週期 WKInterfaceController
牽涉到下列呼叫:
- 喚醒 :您應該在此方法中執行大部分的初始化。
- WillActivate :在監看式應用程式顯示給使用者之前不久呼叫。 使用此方法執行最後一刻初始化、啟動動畫等。
- 此時,監看式應用程式隨即出現,而延伸模組會開始回應使用者輸入,並根據您的應用程式邏輯更新監看應用程式顯示。
- DidDeactivate 使用者關閉監看式應用程式之後,會呼叫此方法。 在此方法傳回之後,在下次
WillActivate
呼叫之前,無法修改使用者介面控件。 如果 i 電話 的連線中斷,也會呼叫這個方法。 - 停用擴充功能之後,您的程式無法存取它。 不會呼叫暫止的異步函式。 監看套件延伸模組可能不會使用背景處理模式。 如果使用者重新啟用程式,但應用程式尚未由作業系統終止,則第一個呼叫的方法會是
WillActivate
。
使用者介面的類型
用戶可以使用您的監看式應用程式進行三種類型的互動。
所有都是使用的 WKInterfaceController
自定義子類別進行程序設計,因此先前討論的生命週期序列會普遍套用 (通知是以 的 WKUserNotificationController
子類別進行程序設計,其本身為 的子類別 WKInterfaceController
):
一般互動
大部分的監看應用程式/延伸模塊互動會與您撰寫的WKInterfaceController
子類別對應至監看應用程式 Interface.storyboard 中的場景。 這在安裝和用戶入門文章中詳述。
下圖顯示範例分鏡腳本的一部分。 針對此處顯示的每個場景,延伸模組專案中會有對應的自訂 WKInterfaceController
(LabelDetailController
、、 SwitchDetailController
ButtonDetailController
等) 。
通知
通知是 Apple Watch 的主要使用案例。 支援本機和遠端通知。 與通知的互動會分兩個階段進行,稱為 Short-and Long-Look。
簡短外觀會短暫顯示,並顯示監看應用程式圖示、其名稱和標題(如 指定)。WKInterfaceController.SetTitle
Long Look 結合了系統提供的 Sash 區域和 [關閉] 按鈕與自定義分鏡腳本內容。
WKUserNotificationInterfaceController
WKInterfaceController
使用和DidReceiveRemoteNotification
方法DidReceiveLocalNotification
擴充。
覆寫這些方法以回應通知事件。
如需通知 UI 設計的詳細資訊,請參閱 Apple Watch Human Interface Guidelines
螢幕大小
Apple Watch 有兩個臉部大小:38mm 和 42mm,兩者顯示比例為 5:4,以及 Retina 顯示器。 其可使用的大小如下:
- 38mm:136 x 170 邏輯圖元(272 x 340 實體圖元)
- 42mm:156 x 195 邏輯圖元(312 x 390 實體圖元)。
使用 WKInterfaceDevice.ScreenBounds
來判斷您的監看式應用程式正在執行的顯示。
一般而言,使用更受限的 38mm 顯示器,然後相應增加,開發文字和版面配置設計會比較容易。 如果您從較大的環境開始,相應減少可能會導致不美觀的重疊或文字截斷。
深入瞭解 使用螢幕大小。
watchOS 的限制
開發 watchOS 應用程式時,請注意 watchOS 有一些限制:
Apple Watch 裝置的儲存空間有限 - 下載大型檔案之前,請注意可用的空間(例如音訊或電影檔案)。
許多 watchOS 控制件在 UIKit 中都有類似專案,但與 UIKit 對等專案相比,它們有不同的類別(
WKInterfaceButton
而不是UIButton
WKInterfaceSwitch
、、UISwitch
等等),而且方法集有限。 此外,watchOS 有一些控件,例如WKInterfaceDate
(用於顯示 UIKit 沒有的日期和時間)。- 您無法僅將通知路由傳送至 Watch,或僅限 i 電話(Apple 尚未宣佈使用者透過路由傳送的那種控制)。
一些其他已知限制/常見問題:
Apple 不允許第三方自定義手錶臉部。
允許監看式在連線手機上控制 iTunes 的 API 是私人的。
深入閱讀
請參閱 Apple 的檔案: