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:
- A mobile app creates a notification and the system automatically bridges that notification to the watch.
- A wearable app creates a notification.
For both scenarios, use the
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.
Use one of the
NotificationCompat.Style
subclasses for the best results.
Note:
Using 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
the same way you would on mobile, using any of the NotificationCompat.Style
subclasses. For example, a standard notification using
NotificationCompat.MessagingStyle
looks like this:
You can see the notification has multiple actions stacked at the bottom of the expanded state.
For examples of
NotificationCompat.BigPictureStyle
,
NotificationCompat.BigTextStyle
,
NotificationCompat.InboxStyle
,
and NotificationCompat.MessagingStyle
,
check out the Notification sample
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()
.
For more information, read
Add the reply button.
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.
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:
-
Create an instance of a
WearableExtender
, setting the wearable-specific options for the notification. -
Create an instance of
NotificationCompat.Builder
, setting the desired properties for your notification as described earlier in this guide. -
Call
extend()
on the notification and pass in theWearableExtender
. This applies the wearable options to the notification. -
Call
build()
to build the notification.
Note:
If you use the framework's NotificationManager
,
some features from
NotificationCompat.WearableExtender
don't work, so make sure to use
NotificationCompat
.
You can sync dismissals or cancellations of notifications across the user's devices. To
sync a dismissal, use the
setDismissalId()
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()
.
Specify wearable-only actions
If you want different actions available on the watch and the phone, then use
WearableExtender.addAction()
. Once you add an action with this method,
the wearable does not display any other actions added with
NotificationCompat.Builder.addAction()
. The actions added with
WearableExtender.addAction()
appear only on the wearable, not
on the phone.