Wear OS の通知

スマートウォッチの通知はスマートフォンと同じ API を使用します。構造も同じです。

スマートウォッチに通知が表示される仕組みは 2 通りあります。

  1. モバイルアプリが通知を作成し、その通知をシステムがスマートウォッチに自動的にブリッジする。
  2. ウェアラブル アプリが通知を作成する。

どちらのシナリオでも、デベロッパーは NotificationCompat.Builder クラスを使用して通知を作成します。ビルダークラスを使用して通知を作成すると、システムによって通知を適切に表示するための処理が行われます。

たとえば、モバイルアプリから通知を発行すると、各通知は通知ストリームにカードとして表示されます。

通知カード

図 1. スマートフォンとスマートウォッチに表示された同じ通知

最良の結果を得るには、いずれかの NotificationCompat.Style サブクラスを使用します。

注: RemoteViews を使用した通知では、カスタム レイアウトが取り除かれ、ウェアラブルにはテキストとアイコンだけが表示されます。ただし、スマートウォッチで適切に機能するカスタムのカード レイアウトを使用するカスタム通知を作成できます。

おすすめのウェアラブル向け通知

展開可能な通知は、ウェアラブル ユーザーを惹きつける方法として優れているため、すべての通知の出発点として使用することをおすすめします。閉じた状態は、ひと目ですぐわかるよう通知トレイに表示されます。ユーザーがタップすると通知が開き、追加のコンテンツとアクションについて、臨場感のあるスクロール可能な表示が行われます。

いずれかの NotificationCompat.Style サブクラスを使用して、モバイルの場合と同じように展開可能な通知を作成できます。

たとえば、NotificationCompat.MessagingStyle を使用した標準的な通知は次のようになります。展開可能な通知

図 2. Wear OS の MessagingStyle 通知の例

開いた状態の通知には、下部に複数のアクションが重ねられています。

NotificationCompat.BigPictureStyleNotificationCompat.BigTextStyleNotificationCompat.InboxStyleNotificationCompat.MessagingStyle の例については、GitHub の通知サンプルをご覧ください。

ヒント: 通知に「返信」アクションが含まれている場合(メッセージ アプリなど)、通知の動作を拡張できます。たとえば setChoices() を使用して、ウェアラブルから音声入力で直接返信したり、事前定義のテキストで返信したりできるようにします。 詳しくは、返信ボタンを追加するをご覧ください。

通知を重複させない

デフォルトでは、通知はコンパニオン スマートフォン アプリからペア設定されているスマートウォッチにブリッジされます。これは、ウェアラブル アプリをインストールしていない場合に最適な方法です。

ただし、スタンドアロンのスマートウォッチ アプリを作成する場合、コンパニオン スマートフォン アプリが存在すると、これらのアプリによって重複する通知が作成される可能性があります。

Wear OS では、Bridging API を使用して重複する通知を停止できます。詳しくは、Wear の通知のブリッジモードをご覧ください。

ウェアラブル固有の機能を通知に追加する

ウェアラブル固有の機能(ウェアラブル通知でアプリアイコンを非表示にする、ユーザーが音声入力でメッセージの返信を指示できるようにするなど)を通知に追加する必要がある場合は、NotificationCompat.WearableExtender クラスを使用して目的のオプションを指定できます。 この API を使用する手順は次のとおりです。

  1. WearableExtender のインスタンスを作成し、ウェアラブル固有のオプションを通知に設定します。
  2. NotificationCompat.Builder のインスタンスを作成し、前述の説明に従って目的のプロパティを通知に設定します。
  3. 通知で extend() を呼び出し、WearableExtender を渡します。これにより、ウェアラブル用のオプションが通知に適用されます。
  4. build() を呼び出して通知を作成します。

注: フレームワークの NotificationManager を使用する場合は、NotificationCompat.WearableExtender の一部の機能が動作しないため、必ず NotificationCompat を使用してください。

通知の消去(キャンセル)をユーザーの複数のデバイス間で同期できます。消去を同期するには、setDismissalId() メソッドを使用します。setDismissalId() メソッドを呼び出すときに、通知ごとにグローバルに一意の ID を文字列として渡します。通知が消去されると、同じ消去 ID を持つ他のすべての通知が(1 つまたは複数の)スマートウォッチとコンパニオン スマートフォンで消去されます。消去 ID を取得するには、getDismissalId() を使用します。

ウェアラブル専用のアクションを指定する

スマートウォッチとスマートフォンで異なるアクションを利用する場合は、WearableExtender.addAction() を使用します。このメソッドでアクションを追加すると、NotificationCompat.Builder.addAction() で追加した他のアクションはウェアラブルに表示されなくなります。WearableExtender.addAction() で追加したアクションはウェアラブルにのみ表示され、スマートフォンには表示されなくなります。