分享方式:


watchOS 簡介

關於 watchOS

watchOS 應用程式解決方案有 3 個專案:

  • Watch Extension – 包含監看式應用程式程式代碼的專案。
  • 監看應用程式 – 包含使用者介面分鏡腳本和資源。
  • iOS 父應用程式 – 此應用程式是一般的 i 電話 應用程式。 監看式應用程式和延伸模組會組合至 i 電話 應用程式,以傳遞至使用者的監看式。

在 watchOS 1 應用程式中,延伸模組中的程式代碼會在 i 電話 上執行 – Apple Watch 實際上是外部顯示器。 watchOS 2 和 3 應用程式完全在 Apple Watch 上執行。 下圖顯示這項差異:

此圖顯示 watchOS 1 和 watchOS 2(及更新版)之間的差異

無論以哪個版本的 watchOS 為目標,在 Visual Studio for Mac 的 Solution Pad 中,完整的解決方案看起來會像這樣:

The 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 中的場景。 這在安裝和用戶入門文章中詳述。 下圖顯示範例分鏡腳本的一部分。 針對此處顯示的每個場景,延伸模組專案中會有對應的自訂 WKInterfaceControllerLabelDetailController、、 SwitchDetailControllerButtonDetailController等) 。

一般互動範例

通知

通知是 Apple Watch 的主要使用案例。 支援本機和遠端通知。 與通知的互動會分兩個階段進行,稱為 Short-and Long-Look。

簡短外觀會短暫顯示,並顯示監看應用程式圖示、其名稱和標題(如 指定)。WKInterfaceController.SetTitle

Long Look 結合了系統提供的 Sash 區域和 [關閉] 按鈕與自定義分鏡腳本內容。

WKUserNotificationInterfaceControllerWKInterfaceController使用和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而不是 UIButtonWKInterfaceSwitch 、、UISwitch等等),而且方法集有限。 此外,watchOS 有一些控件,例如 WKInterfaceDate (用於顯示 UIKit 沒有的日期和時間)。

    • 您無法僅將通知路由傳送至 Watch,或僅限 i 電話(Apple 尚未宣佈使用者透過路由傳送的那種控制)。

一些其他已知限制/常見問題:

  • Apple 不允許第三方自定義手錶臉部。

  • 允許監看式在連線手機上控制 iTunes 的 API 是私人的。

深入閱讀

請參閱 Apple 的檔案: