Notifications on watches use the same APIs and have the same structure as notifications on phones.

Notifications can appear on a watch in two ways:

1. A mobile app creates a notification and the system[automatically bridges](https://developer.android.com/training/wearables/notifications/bridger)that notification to the watch.
2. A wearable app creates a notification.

For both scenarios, use the[NotificationCompat.Builder](https://developer.android.com/reference/androidx/core/app/NotificationCompat.Builder)class to create notifications. When you build notifications with the builder class, the system takes care of displaying notifications properly. For example, when you issue a notification from your mobile app, each notification appears as a card on the Notification Stream.

Review the following example to see how notifications display.![notification-cards](https://developer.android.com/static/images/ui/notifications/wear_2x.png)

**Figure 1.**The same notification displayed on a phone and on a watch.

Use one of the[NotificationCompat.Style](https://developer.android.com/reference/androidx/core/app/NotificationCompat.Style)subclasses for the best results.

**Note:** Using[RemoteViews](https://developer.android.com/reference/android/widget/RemoteViews)strips notifications of custom layouts, and the wearable only displays the text and icons.

## Recommended notifications for wearables

Use expandable notifications as the starting point for all notifications, as they are a great way to engage wearable users. The collapsed state displays in the notification tray for a short, glanceable experience. If the user taps it, the notification expands, revealing an immersive, scrollable experience of additional content and actions.

You can[Create an expandable notification](https://developer.android.com/training/notify-user/expanded)the same way you would on mobile, using any of the`NotificationCompat.Style`subclasses. For example, a standard notification using[NotificationCompat.MessagingStyle](https://developer.android.com/reference/androidx/core/app/NotificationCompat.MessagingStyle)looks like this:![expandable-notification](https://developer.android.com/static/images/ui/notifications/expandable_noti.png)

**Figure 2.** Example of a`MessagingStyle`notification on Wear OS.

You can see the notification has multiple[actions](https://developer.android.com/develop/ui/views/notifications/build-notification#Actions)stacked at the bottom of the expanded state.

For examples of[NotificationCompat.BigPictureStyle](https://developer.android.com/reference/androidx/core/app/NotificationCompat.BigPictureStyle),[NotificationCompat.BigTextStyle](https://developer.android.com/reference/androidx/core/app/NotificationCompat.BigTextStyle),[NotificationCompat.InboxStyle](https://developer.android.com/reference/androidx/core/app/NotificationCompat.InboxStyle), and[NotificationCompat.MessagingStyle](https://developer.android.com/reference/androidx/core/app/NotificationCompat.MessagingStyle), check out the[Notification sample](https://github.com/android/user-interface-samples/tree/d192c9d2000e43f63cca3eb1b9af05cf2e2ee867/Notifications)on GitHub.

**Tip:** If your notifications include a "reply" action, such as for a messaging app, you can enhance the behavior of the notification. For example, you can enable voice input replies directly from the wearable or pre-defined text responses with[setChoices()](https://developer.android.com/reference/androidx/core/app/RemoteInput.Builder#setChoices(java.lang.CharSequence[])). For more information, read[Add the reply button](https://developer.android.com/training/notify-user/build-notification#add-reply-action).

## Avoid duplicate Notifications

By default, notifications are bridged from a companion phone app to any paired watches. This is a great option if you don't have a wearable app installed.

However, if you build a standalone watch app and a companion phone app, the apps create duplicate notifications.

Wear OS provides a way to stop duplicate notifications with the Bridging APIs. This is particularly important for apps on devices that run Wear OS 5 or higher, because some notifications that are dismissible on a mobile device aren't dismissible on the Wear OS device. For more information, read[Bridging options for notifications](https://developer.android.com/training/wearables/notifications/bridger).

## Add wearable-specific features to a notification

If you need to add wearable-specific features to a notification, such as hiding an app icon from the wearable notification or letting users dictate a text response with voice input, you can use the`NotificationCompat.WearableExtender`class to specify the options. To use this API, do the following:

1. Create an instance of a[`WearableExtender`](https://developer.android.com/reference/androidx/core/app/NotificationCompat.WearableExtender), setting the wearable-specific options for the notification.
2. Create an instance of`NotificationCompat.Builder`, setting the desired properties for your notification as described earlier in this guide.
3. Call[`extend()`](https://developer.android.com/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.
4. Call[`build()`](https://developer.android.com/reference/androidx/core/app/NotificationCompat.Builder#build())to build the notification.

**Note:** If you use the framework's[NotificationManager](https://developer.android.com/reference/android/app/NotificationManager), some features from`NotificationCompat.WearableExtender`don't work, so make sure to use[`NotificationCompat`](https://developer.android.com/reference/androidx/core/app/NotificationCompat).

You can sync dismissals or cancellations of notifications across the user's devices. To sync a dismissal, use the[`setDismissalId()`](https://developer.android.com/reference/androidx/core/app/NotificationCompat.WearableExtender#setDismissalId(java.lang.String))method. For each notification, pass a globally unique ID as a string when you call`setDismissalId()`. When the notification is dismissed, all other notifications with the same dismissal ID are dismissed on the watch and on the companion phone. To retrieve a dismissal ID, use[`getDismissalId()`](https://developer.android.com/reference/androidx/core/app/NotificationCompat.WearableExtender#getDismissalId()).

## Specify wearable-only actions

If you want different actions available on the watch and the phone, then use[`WearableExtender.addAction()`](https://developer.android.com/reference/androidx/core/app/NotificationCompat.WearableExtender#addAction(androidx.core.app.NotificationCompat.Action)). Once you add an action with this method, the wearable does not display any other actions added with[`NotificationCompat.Builder.addAction()`](https://developer.android.com/reference/androidx/core/app/NotificationCompat.Builder#addAction(androidx.core.app.NotificationCompat.Action)). The actions added with`WearableExtender.addAction()`appear only on the wearable, not on the phone.

## Launch your phone app from a wearable device

If you are using bridged notifications, any notification automatically includes a button to launch the app on the phone. However, if you are using a local notification, created on the watch, use the following steps to create a button that launches the app on the phone:

1. Create a new`Activity`that extends[`ConfirmationActivity`](https://developer.android.com/reference/androidx/wear/activity/ConfirmationActivity).
2. Use[`RemoteActivityHelper`](https://developer.android.com/reference/androidx/wear/remote/interactions/RemoteActivityHelper)in the new`Activity`to launch the phone app.
3. When building the`Intent`to launch the`Activity`from the notification, set the[`EXTRA_ANIMATION_TYPE`](https://developer.android.com/reference/androidx/wear/activity/ConfirmationActivity#EXTRA_ANIMATION_TYPE())extra to[`OPEN_ON_PHONE_ANIMATION`](https://developer.android.com/reference/androidx/wear/activity/ConfirmationActivity#OPEN_ON_PHONE_ANIMATION()).

This approach guides the user to interacting on their phone and follows the platform requirements for launching background processes.

<br />

**Note:** You can't use a`BroadcastReceiver`as the target of the notification action.