By default, notifications are bridged (shared) from an app on a companion phone to the watch. If you build a standalone watch app and have a companion phone app, they may duplicate notifications. The Android Wear 2.0 Preview includes a Bridging mode feature to handle this problem of repeated notifications.
With the Android Wear 2.0 Preview, developers can change the behavior of notifications with the following:
- Specifying in the standalone app's Android manifest file that notifications from the corresponding phone app should not be bridged to the watch
- Setting a dismissal ID so notification dismissals are synced across devices
Preventing Bridging with the Bridging Mode Feature
To prevent bridging of notifications from a phone app, you can use an entry in the manifest file of the watch app (e.g. the standalone watch app), as follows:
com.google.android.wearable.notificationBridgeMode
Setting that entry to NO_BRIDGING
will prevent bridging:
<meta-data android:name="com.google.android.wearable.notificationBridgeMode" android:value="NO_BRIDGING" />
The default bridging behavior occurs if you do not include the entry or
if you specify a value of BRIDGING
instead of
NO_BRIDGING
.
Existing method of preventing bridging
An existing way to prevent bridging is with the
Notification.Builder
class; specify true
in the
setLocalOnly method.
However, this way to prevent bridging may not be preferable. For example,
if a user installs a phone app but not the corresponding watch app, the
setLocalOnly
method could prevent the bridging of helpful
notifications. Additionally, users may have multiple paired watches and
the watch app may not be installed on all of them.
Thus, if bridging should be prevented when the watch app is installed, use the Bridging mode feature.
Using a Dismissal ID to Sync Notification Dismissals
If you prevent bridging with the Bridging mode feature, dismissals (cancellations) of notifications are not synced across a user's devices. However, the following methods of the NotificationCompat.WearableExtender class enable you to use dismissal IDs:
public WearableExtender setDismissalId(String dismissalId) public String getDismissalId()
To enable a dismissal to be synced, use the setDismissalId()
method. For each notification, pass a globally unique ID, as a string,
when you call the setDismissalId()
method. When the
notification is dismissed, all other notifications with the same
dismissal ID are dismissed on the watch(es) and on the companion phone.
To retrieve a dismissal ID, use getDismissalId()
.
In the following example, syncing of dismissals is enabled because a globally unique ID is specified for a new notification:
NotificationCompat.WearableExtender wearableExtender = new NotificationCompat.WearableExtender().setDismissalId(“abc123”); Notification notification = new NotificationCompat.Builder(context) <set other fields> .extend(wearableExtender) .build();
Dismissal IDs work if a watch is paired to an Android phone, but not if a watch is paired to an iPhone.