Wear OS の通知
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
スマートウォッチの通知はスマートフォンと同じ API を使用します。構造も同じです。
スマートウォッチに通知が表示される仕組みは 2 通りあります。
- モバイルアプリが通知を作成し、その通知をシステムがスマートウォッチに自動的にブリッジする。
- ウェアラブル アプリが通知を作成する。
どちらのシナリオでも、NotificationCompat.Builder
クラスを使用して通知を作成します。ビルダークラスを使用して通知を作成すると、システムによって通知を適切に表示するための処理が行われます。たとえば、モバイルアプリから通知を発行すると、各通知は通知ストリームにカードとして表示されます。
次の例は、通知がどのように表示されるかを示しています。
図 1. スマートフォンとスマートウォッチに表示された同じ通知
最良の結果を得るには、いずれかの NotificationCompat.Style
サブクラスを使用します。
注:
RemoteViews
を使用すると、カスタム レイアウトの通知が取り除かれ、ウェアラブルにはテキストとアイコンだけが表示されます。
おすすめのウェアラブル向け通知
展開可能な通知は、ウェアラブル ユーザーを惹きつける方法として優れているため、すべての通知の出発点として使用します。閉じた状態は、ひと目ですぐわかるよう通知トレイに表示されます。ユーザーがタップすると通知が開き、追加のコンテンツとアクションについて、臨場感のあるスクロール可能な表示が行われます。
いずれかの NotificationCompat.Style
サブクラスを使用して、モバイルの場合と同じように展開可能な通知を作成できます。たとえば、NotificationCompat.MessagingStyle
を使用した標準的な通知は次のようになります。
図 2. Wear OS の MessagingStyle
通知の例
開いた状態の通知には、下部に複数のアクションが重ねられています。
NotificationCompat.BigPictureStyle
、NotificationCompat.BigTextStyle
、NotificationCompat.InboxStyle
、NotificationCompat.MessagingStyle
の例については、GitHub の通知サンプルをご覧ください。
ヒント: 通知に「返信」アクションが含まれている場合(メッセージ アプリなど)、通知の動作を拡張できます。たとえば setChoices()
を使用して、ウェアラブルから音声入力で直接返信したり、事前定義のテキストで返信したりできるようにします。
詳しくは、返信ボタンを追加するをご覧ください。
通知の重複を避ける
デフォルトでは、通知はコンパニオン スマートフォン アプリからペア設定されているスマートウォッチにブリッジされます。これは、ウェアラブル アプリをインストールしていない場合に最適な方法です。
ただし、スタンドアロンのスマートウォッチ アプリとコンパニオン スマートフォン アプリを作成すると、これらのアプリによって重複する通知が作成されます。
Wear OS では、Bridging API を使用して重複する通知を停止できます。これは、Wear OS 5 以降を搭載したデバイスのアプリでは特に重要です。モバイル デバイスで閉じることができる通知の一部は、Wear OS デバイスでは閉じることができないためです。詳しくは、通知のブリッジ オプションをご覧ください。
ウェアラブル固有の機能を通知に追加する
ウェアラブル固有の機能(ウェアラブル通知でアプリアイコンを非表示にする、ユーザーが音声入力でメッセージの返信を指示できるようにするなど)を通知に追加する必要がある場合は、NotificationCompat.WearableExtender
クラスを使用して目的のオプションを指定できます。
この API を使用する手順は次のとおりです。
-
WearableExtender
のインスタンスを作成し、ウェアラブル固有のオプションを通知に設定します。
-
NotificationCompat.Builder
のインスタンスを作成し、前述の説明に従って目的のプロパティを通知に設定します。
-
通知で
extend()
を呼び出し、WearableExtender
を渡します。これにより、ウェアラブル用のオプションが通知に適用されます。
-
build()
を呼び出して通知を作成します。
注: フレームワークの NotificationManager
を使用する場合は、NotificationCompat.WearableExtender
の一部の機能が動作しないため、必ず NotificationCompat
を使用してください。
通知の消去(キャンセル)をユーザーの複数のデバイス間で同期できます。消去操作を同期するには、setDismissalId()
メソッドを使用します。setDismissalId()
を呼び出すときに、通知ごとにグローバルに一意の ID を文字列として渡します。通知が消去されると、同じ消去 ID を持つ他のすべての通知がスマートウォッチとコンパニオン スマートフォンで消去されます。消去 ID を取得するには、getDismissalId()
を使用します。
ウェアラブル専用のアクションを指定する
スマートウォッチとスマートフォンで異なるアクションを利用する場合は、WearableExtender.addAction()
を使用します。このメソッドでアクションを追加すると、NotificationCompat.Builder.addAction()
で追加した他のアクションはウェアラブルに表示されなくなります。WearableExtender.addAction()
で追加したアクションはウェアラブルにのみ表示され、スマートフォンには表示されなくなります。
ウェアラブル デバイスから電話アプリを起動する
ブリッジされた通知を使用している場合、すべての通知にスマートフォンのアプリを起動するボタンが自動的に含まれます。ただし、スマートウォッチで作成されたローカル通知を使用している場合は、次の手順でスマートフォンでアプリを起動するボタンを作成します。
ConfirmationActivity
を拡張する新しい Activity
を作成します。
- 新しい
Activity
で RemoteActivityHelper
を使用して、電話アプリを起動します。
- 通知から
Activity
を起動する Intent
をビルドするときは、EXTRA_ANIMATION_TYPE
エクストラを OPEN_ON_PHONE_ANIMATION
に設定します。
このアプローチでは、ユーザーがスマートフォンで操作を行うように誘導し、バックグラウンド プロセスを起動するためのプラットフォーム要件に準拠します。
注: BroadcastReceiver
を通知アクションのターゲットとして使用することはできません。
このページのコンテンツやコードサンプルは、コンテンツ ライセンスに記載のライセンスに従います。Java および OpenJDK は Oracle および関連会社の商標または登録商標です。
最終更新日 2025-07-27 UTC。
[[["わかりやすい","easyToUnderstand","thumb-up"],["問題の解決に役立った","solvedMyProblem","thumb-up"],["その他","otherUp","thumb-up"]],[["必要な情報がない","missingTheInformationINeed","thumb-down"],["複雑すぎる / 手順が多すぎる","tooComplicatedTooManySteps","thumb-down"],["最新ではない","outOfDate","thumb-down"],["翻訳に関する問題","translationIssue","thumb-down"],["サンプル / コードに問題がある","samplesCodeIssue","thumb-down"],["その他","otherDown","thumb-down"]],["最終更新日 2025-07-27 UTC。"],[],[],null,["# Notifications on Wear OS\n\nNotifications on watches use the same APIs and have the same structure as notifications on phones.\n\n\nNotifications can appear on a watch in two ways:\n\n1. A mobile app creates a notification and the system [automatically bridges](/training/wearables/notifications/bridger) that notification to the watch.\n2. A wearable app creates a notification.\n\n\nFor both scenarios, use the\n[NotificationCompat.Builder](/reference/androidx/core/app/NotificationCompat.Builder)\nclass to create notifications. When you build notifications with the builder class, the system\ntakes care of displaying notifications properly. For example, when you issue a notification from\nyour mobile app, each notification appears as a card on the Notification Stream.\n\n\nReview the following example to see how notifications display.\n\n\n**Figure 1.** The same notification displayed on a phone and on a watch.\n\n\nUse one of the\n[NotificationCompat.Style](/reference/androidx/core/app/NotificationCompat.Style)\nsubclasses for the best results.\n\n**Note:**\nUsing [RemoteViews](/reference/android/widget/RemoteViews)\nstrips notifications of custom layouts, and the wearable only displays the text and icons.\n\nRecommended notifications for wearables\n---------------------------------------\n\n\nUse expandable notifications as the starting point for all notifications, as they are\na great way to engage wearable users. The collapsed state displays in the notification\ntray for a short, glanceable experience. If the user taps it, the notification expands,\nrevealing an immersive, scrollable experience of additional content and actions.\n\n\nYou can [Create an expandable notification](/training/notify-user/expanded)\nthe same way you would on mobile, using any of the `NotificationCompat.Style`\nsubclasses. For example, a standard notification using\n[NotificationCompat.MessagingStyle](/reference/androidx/core/app/NotificationCompat.MessagingStyle)\nlooks like this:\n\n\n**Figure 2.** Example of a `MessagingStyle` notification on Wear OS.\n\n\nYou can see the notification has multiple\n[actions](/develop/ui/views/notifications/build-notification#Actions) stacked at the bottom of the\nexpanded state.\n\n\nFor examples of\n[NotificationCompat.BigPictureStyle](/reference/androidx/core/app/NotificationCompat.BigPictureStyle),\n[NotificationCompat.BigTextStyle](/reference/androidx/core/app/NotificationCompat.BigTextStyle),\n[NotificationCompat.InboxStyle](/reference/androidx/core/app/NotificationCompat.InboxStyle),\nand [NotificationCompat.MessagingStyle](/reference/androidx/core/app/NotificationCompat.MessagingStyle),\ncheck out the [Notification sample](https://github.com/android/user-interface-samples/tree/d192c9d2000e43f63cca3eb1b9af05cf2e2ee867/Notifications)\non GitHub.\n\n\n**Tip:** If your notifications include a \"reply\" action, such as for a messaging\napp, you can enhance the behavior of the notification. For example, you can enable voice input\nreplies directly from the wearable or pre-defined text responses with\n[setChoices()](/reference/androidx/core/app/RemoteInput.Builder#setChoices(java.lang.CharSequence[])).\nFor more information, read\n[Add the reply button](/training/notify-user/build-notification#add-reply-action).\n\nAvoid duplicate Notifications\n-----------------------------\n\n\nBy default, notifications are bridged from a companion phone app to any paired watches. This is a\ngreat option if you don't have a wearable app installed.\n\n\nHowever, if you build a standalone watch app and a companion phone app, the apps\ncreate duplicate notifications.\n\n\nWear OS provides a way to stop duplicate notifications with the Bridging APIs. This is\nparticularly important for apps on devices that run Wear OS 5 or higher, because some\nnotifications that are dismissible on a mobile device aren't dismissible on the Wear OS device.\nFor more information, read\n[Bridging options for notifications](/training/wearables/notifications/bridger).\n\nAdd wearable-specific features to a notification\n------------------------------------------------\n\n\nIf you need to add wearable-specific features to a notification, such as hiding\nan app icon from the wearable notification or letting users dictate a text response\nwith voice input, you can use the\n`NotificationCompat.WearableExtender` class to specify the options.\nTo use this API, do the following:\n\n1. Create an instance of a [`WearableExtender`](/reference/androidx/core/app/NotificationCompat.WearableExtender), setting the wearable-specific options for the notification.\n2. Create an instance of `NotificationCompat.Builder`, setting the desired properties for your notification as described earlier in this guide.\n3. Call [`extend()`](/reference/androidx/core/app/NotificationCompat.Builder#extend(androidx.core.app.NotificationCompat.Extender)) on the notification and pass in the `WearableExtender`. This applies the wearable options to the notification.\n4. Call [`build()`](/reference/androidx/core/app/NotificationCompat.Builder#build()) to build the notification.\n\n**Note:**\nIf you use the framework's [NotificationManager](/reference/android/app/NotificationManager),\nsome features from\n`NotificationCompat.WearableExtender` don't work, so make sure to use\n[`NotificationCompat`](/reference/androidx/core/app/NotificationCompat).\n\n\nYou can sync dismissals or cancellations of notifications across the user's devices. To\nsync a dismissal, use the\n[`setDismissalId()`](/reference/androidx/core/app/NotificationCompat.WearableExtender#setDismissalId(java.lang.String)) method. For each notification, pass a globally unique\nID as a string when you call\n`setDismissalId()`. When the notification is dismissed, all other\nnotifications with the same dismissal ID are dismissed on the watch and on the\ncompanion phone. To retrieve a dismissal ID, use\n[`getDismissalId()`](/reference/androidx/core/app/NotificationCompat.WearableExtender#getDismissalId()).\n\nSpecify wearable-only actions\n-----------------------------\n\n\nIf you want different actions available on the watch and the phone, then use\n[`WearableExtender.addAction()`](/reference/androidx/core/app/NotificationCompat.WearableExtender#addAction(androidx.core.app.NotificationCompat.Action)). Once you add an action with this method,\nthe wearable does not display any other actions added with\n[`NotificationCompat.Builder.addAction()`](/reference/androidx/core/app/NotificationCompat.Builder#addAction(androidx.core.app.NotificationCompat.Action)). The actions added with\n`WearableExtender.addAction()` appear only on the wearable, not\non the phone.\n\nLaunch your phone app from a wearable device\n--------------------------------------------\n\n\nIf you are using bridged notifications, any notification automatically includes a button to launch\nthe app on the phone. However, if you are using a local notification, created on the watch, use\nthe following steps to create a button that launches the app on the phone:\n\n1. Create a new `Activity` that extends [`ConfirmationActivity`](/reference/androidx/wear/activity/ConfirmationActivity).\n2. Use [`RemoteActivityHelper`](/reference/androidx/wear/remote/interactions/RemoteActivityHelper) in the new `Activity` to launch the phone app.\n3. When building the `Intent` to launch the `Activity` from the notification, set the [`EXTRA_ANIMATION_TYPE`](/reference/androidx/wear/activity/ConfirmationActivity#EXTRA_ANIMATION_TYPE()) extra to [`OPEN_ON_PHONE_ANIMATION`](/reference/androidx/wear/activity/ConfirmationActivity#OPEN_ON_PHONE_ANIMATION()).\n\nThis approach guides the user to interacting on their phone and follows the platform requirements for launching background processes.\n\n\u003cbr /\u003e\n\n\n**Note:** You can't use a `BroadcastReceiver` as the target\nof the notification action."]]