Xamarin での watchOS 通知

iOS アプリが通知をサポートしている場合、Watch アプリで通知を受け取ることができます。 通知処理が組み込まれているため、以下に説明する追加の通知サポートを追加する必要はありませんが、通知の動作や外観をカスタマイズする場合は、続きをご覧ください。

ソリューションの iOS アプリに通知サポートを追加する詳細については、iOS 通知のドキュメントを参照してください。

通知コントローラーの作成

ストーリーボード上の通知コントローラーには、それらをトリガーする特殊なセグエがあります。 新しい通知インターフェイス コントローラー をストーリーボードにドラッグすると、セグエが自動的にアタッチされます。

セグエがアタッチされた新しい通知インターフェイス コントローラー

通知セグエを選択すると、そのプロパティを編集できます。

選択された通知セグエ

コントローラーをカスタマイズすると、WatchKitCatalog の次の例のようになります。

通知プロパティ

通知には、次の 2 つがあります。

  • 短い外観 - システムによって定義されたスクロールできない静的ビュー。

  • 長い外観 - スクロール可能でカスタマイズ可能なビューが定義されています。 より単純な静的バージョンとより複雑な動的バージョンを指定できます。

短い外観の通知コントローラー

短い外観の UI は、アプリ アイコン、アプリ名、通知タイトル文字列のみで構成されます。

ユーザーが通知を無視しない場合、システムは、詳細情報を提供する長い外観の通知に自動的に切り替わります。

長い外観の通知コントローラー

OS は、さまざまな要因に基づいて、静的ビューと動的ビューのどちらを表示するかを決定します。 静的インターフェイスを指定する必要があり、必要に応じて通知用の動的インターフェイスを含めることもできます。

Static

静的ビューは、シンプルですばやく表示される必要があります。

静的ビュー

動的

動的ビューでは、より多くのデータを表示し、より多くの対話機能を提供できます。

動的ビュー

通知の生成

通知はリモート サーバーから受け取ることも、iOS アプリでローカルに生成することもできます。

ローカル通知を生成する方法の例については、「iOS 通知のチュートリアル」を参照してください。

ローカル通知を Apple Watch に表示するには、AlertTitle が設定されている必要があります。AlertTitle 文字列は、短い外観のインターフェイスに表示されます。 AlertTitleAlertBody は通知リストに表示され、AlertBody は長い外観のインターフェイスに表示されます。

次のスクリーンショットは、通知リストに表示されている AlertTitle と、長い外観のインターフェイスに表示されている AlertBody を示しています。

このスクリーンショットは、通知の一覧に表示されている AlertTitle を示していますLong-Look インターフェイスに表示される AlertBody

通知のテスト

通知 (ローカルとリモートの両方) はデバイスでのみ適切にテストできますが、iOS Simulator で .json ファイルを使用してシミュレートできます。

Apple Watch でのテスト

Apple Watch で通知をテストするときは、Apple のドキュメントに次のように記載されていることに注意してください。

アプリのローカル通知またはリモート通知がユーザーの iPhone に届くと、iOS はその通知を iPhone に表示するか Apple Watch に表示するかを決定します。

これは、通知が iPhone に表示されるか Apple Watch に表示されるかを iOS が決定するという事実を示唆しています。 通知の受信時にペアリングされた iPhone がアクティブになっている場合、通知は iPhone に表示され、Apple Watch にはルーティングされない可能性があります。

時計に通知が表示されるようにするには、iPhone の画面をオフにするか (電源ボタンを 1 回押す)、スリープ状態にします。 ペアリングされた Apple Watch が範囲内にあり、電源が入っており、手首に装着されている場合、通知はそこにルーティングされ、Apple Watch に表示されます (微妙な表示が伴います)。

iOS Simulator でのテスト

iOS Simulator で通知モードをテストする場合は、テスト JSON ペイロードを指定する必要があります。 Visual Studio for Mac の [カスタム実行引数] ウィンドウでパスを設定します。

ウォッチ拡張機能がスタートアップ プロジェクトとして設定されている場合、Visual Studio for Mac には追加のオプションが表示されます。 ウォッチ拡張機能プロジェクトを右クリックし、[プログラムから実行] > [カスタム パラメーター] を選択します。

カスタム プロパティでの実行

これにより、[WatchKit] タブを含む [実行引数] ウィンドウが開きます。[通知] を選択して JSON ペイロードを指定し、[実行] を押してシミュレーターでウォッチ アプリを起動します。

通知ペイロードの既定値を選択する

既定のペイロード JSON ファイルを使用してシミュレーターでテストする場合、既定の通知コントローラーは次のようになります。

通知の例

コマンド ラインを使用して iOS Simulator を起動することもできます。

通知ペイロードの例

ペイロード JSON ファイル NotificationPayload.json の例を次に示します。

{
    "aps": {
        "alert": "Test message content",
        "title": "Optional title",
        "category": "myCategory"
        },

        "WatchKit Simulator Actions": [
        {
            "title": "First Button",
            "identifier": "firstButtonAction"
        }
        ],

        "customKey": "Use this file to define a testing payload for your notifications. The aps dictionary specifies the category, alert text and title. The WatchKit Simulator Actions array can provide info for one or more action buttons in addition to the standard Dismiss button. Any other top level keys are custom payload. If you have multiple such JSON files in your project, you'll be able to choose between them in when selecting to debug the notification interface of your Watch App."
    }