Xamarin での watchOS のインストールと使用

watchOS 4 には、Xcode 9 を使用した macOS Sierra (10.12) が必要です。

watchOS 1 はもともと Xcode 7 で OS X Yosemite (10.10) を必要としていました。

警告

watchOS 1 の更新プログラムは、2018 年 4 月 1 日以降は受け付けなくなります。 今後の更新プログラムでは、watchOS 2 SDK 以降を使用する必要があります。watchOS 4 SDK を使用したビルドをお勧めします。

プロジェクト構造

ウォッチ アプリは、次の 3 つのプロジェクトで構成されます。

  • Xamarin.iOS i電話 アプリ プロジェクト - これは通常の i電話 プロジェクトであり、任意の Xamarin.iOS テンプレートを使用できます。 ウォッチ アプリとその拡張機能は、このメイン プロジェクト内にバンドルされます。

  • ウォッチ拡張機能プロジェクト - ウォッチ アプリのコード (コントローラー クラスなど) が含まれています。

  • Watch App プロジェクト - ウォッチ アプリのすべての UI リソースを含むユーザー インターフェイスストーリーボード ファイルが含まれています。

Watch Kit カタログのサンプル ソリューションは、Xamarin.Studio では次のようになります。

WatchKitCatalog サンプルをダウンロードして実行して開始します。 サンプルの画面は、[コントロール] ページにあります。

新規プロジェクトの作成

新しい "ウォッチ ソリューション" を作成することはできません。..代わりに、既存の iOS アプリケーションに Watch アプリを追加できます。 ウォッチ アプリを作成するには、次の手順に従います。

  1. 既存のプロジェクトがない場合は、最初に [新しいソリューションのファイル>] を選択し、iOS アプリ (シングル ビュー アプリなど) を作成します。

    Choose File > New Solution and create an iOS app

  2. iOS アプリが作成されたら (または既存の iOS アプリを使用する予定です)、ソリューションを右クリックし、[新しいプロジェクトの追加] > を選択します。[新しいプロジェクト] ウィンドウで、watchOS > App > WatchKit アプリを選択します。

    Select watchOS > App > WatchKit App

  3. 次の画面では、ウォッチ アプリを含める iOS アプリ プロジェクトを選択できます。

    Choose which iOS app project should include the watch app

  4. 最後に、プロジェクトを保存する場所 (および必要に応じて有効なソース管理) を選択します。

    Choose the location to save the project

  5. Visual Studio for Mac では、プロジェクト参照と Info.plist 設定が自動的に構成されます。

ウォッチ ユーザー インターフェイスの作成

Xamarin iOS デザイナーの使用

ウォッチ アプリ の Interface.storyboard をダブルクリックして、iOS デザイナーを使用して編集します。 インターフェイス コントローラーと UI コントロールをツールボックスからストーリーボードにドラッグし、プロパティ パッドを使用して構成できます。

新しいインターフェイス コントローラーを選択し、プロパティ パッドに名前を入力して、各新しいインターフェイス コントローラーにクラスを指定する必要があります (これにより、必要な C# コードビヒンド ファイルが自動的に作成されます)。

Ctrl キーを押しながら、ボタン、テーブル、またはインターフェイス コントローラーから別のインターフェイス コントローラーにドラッグして、セグエを作成します。

Mac での Xcode の使用

Xcode を引き続き使用して、Interface.storyboard ファイルを右クリックし、[Xcode インターフェイス ビルダーで>開く] を選択することで、ユーザー インターフェイスを構築できます。

Open the Interface.storyboard in Xcode Interface Builder

Xcode を使用する場合は、通常の iOS アプリのストーリーボードと同じ手順に従う必要があります (.h ヘッダー ファイルに Ctrl キーを押しながらドラッグしてアウトレットやアクションを作成するなど)。

Xcode Interface Builder でストーリーボードを保存すると、ウォッチ拡張プロジェクトの C# .designer.cs ファイルに、作成したアウトレットとアクションが自動的に追加されます。

Xcode での追加画面の追加

Xcode Interface Builder を使用してストーリーボードに (既定でテンプレートに含まれている以外の) 画面を追加する場合は、新しいインターフェイス コントローラーごとに C# コード ファイル を手動で追加する必要があります。

ストーリーボード新しいインターフェイス コントローラーを追加する方法の詳細な手順を参照してください。

Xamarin iOS Designer は自動的にこれを行います。手動の手順は必要ありません。

ビルド

ウォッチ アプリを含むプロジェクトは、他の iOS プロジェクトと同様にビルドされます。 ビルド プロセスにより、ウォッチ拡張機能 (.appex) を含む i電話 アプリケーション (.app) が生成され、コードレスウォッチ アプリケーション (.app) が含まれます。

起動

Visual Studio for Mac または Visual Studio (Mac ビルド ホストで起動) を使用して、シミュレーターでウォッチ アプリを起動できます。

WatchKit アプリを起動するには、次の 2 つのモードがあります。

  • 通常のアプリ モード (既定)、および
  • 通知 (JSON 形式のテスト通知ペイロードが必要)。

Xcode 8 のサポート

Xcode 8 (またはそれ以降) がインストールされると、Apple Watch シミュレーターは iOS シミュレーターとは別になります (Xcode 6 とは異なり、外部ディスプレイとして表示されます)。 Watch App プロジェクトを選択してスタートアップ プロジェクトにすると、シミュレーターの一覧に、選択する iOS シミュレーターが表示されます (次に示すように)。

Selecting the Simulator type

デバッグを開始すると、iOS シミュレーターと Apple Watch シミュレーターの 2 つのシミュレーターが起動します。 Command + Shift + H キーを押してウォッチ メニューと時計の面に移動し、[ハードウェア] メニューを使用して [強制タッチ圧力] を設定します。 トラックパッドまたはマウスをスクロールすると、デジタル クラウンを使用してシミュレートされます。

トラブルシューティング

ペアリングされたウォッチがないシミュレーターを起動しようとすると、アプリケーション出力に次のエラーが表示されます

error MT0000: Unexpected error - Please file a bug report at https://github.com/xamarin/xamarin-macios/issues/new
error HE0020: Could not find a paired Watch device for the iOS device 'iPhone 6'.

既定値が機能しない場合は、シミュレーターを構成する手順については、Apple のフォーラムを参照してください。

Xcode 6 と watchOS 1

アプリを実行またはデバッグする 前に、ウォッチ拡張機能プロジェクトスタートアップ プロジェクト にする必要があります。 ウォッチ アプリ自体を "開始" することはできません。iOS アプリを選択すると、iOS シミュレーターで通常どおりに起動します。

既定では、ウォッチ アプリは Visual Studio for Mac の [実行] または [デバッグ] コマンドから通常アプリ モード ([概要] または [通知] モードではありません) で起動します。

Xcode 6 を使用する場合、i電話 5、i電話 5S、i電話 6、i電話 6 Plus のみが、Apple Watch - 38mm または Apple Watch - 42mm外部ディスプレイをアクティブにして、ウォッチ アプリケーションが表示されます。

Note

Xcode 6 を使用すると、iOS シミュレーターにウォッチ画面が自動的に表示されないことに注意してください。 [ハードウェア>外部ディスプレイ] メニューを使用して、ウォッチ画面を表示します。

通知モードの起動

コードで通知を 処理する方法については、「通知」ページ を参照してください。

Visual Studio for Mac では、通知の起動 モード でウォッチ アプリを起動できます。

ウォッチ アプリ プロジェクトを右クリックし、[カスタム構成で>実行]を選択します。..:

Running a Custom Configuration

[カスタム パラメーター] ウィンドウが開き、[通知] (および JSON ペイロードを指定) を選択し、[実行] を押してシミュレーターでウォッチ アプリを開始します。

Setting the Notification and Payload

デバッグ

デバッグは、Visual Studio for Mac と Visual Studio の両方でサポートされています。 通知モードでデバッグするときは、必ず通知 JSON ファイルを指定してください。 このスクリーンショットは、ウォッチ アプリでヒットしているデバッグ ブレークポイントを示しています。

This screenshot shows a debug breakpoint being hit in a watch app

起動手順に従うと、iOS シミュレーター (ウォッチ)実行されるウォッチ アプリが表示されます。 通知モードでは、[システム ログを開くデバッグ > ] (CMD + /) を選択し、コードで使用Console.WriteLineできます。

ライフサイクル イベント ハンドラーのデバッグ

watchOS テンプレート ファイル ( InterfaceControllerExtensionDelegateNotificationControllerなど) には、 ComplicationController既に実装されている必要なライフサイクル メソッドが付属しています。 呼び出しを追加Console.WriteLineし、アプリケーション出力読み取って、イベントのライフサイクルをより深く理解します。