Wear OS 上的通知

手表上的通知所使用的 API 和采用的结构与手机上的通知相同。

通知可以通过两种方式显示于手表上:

  1. 由移动应用创建通知,系统会将通知自动桥接到手表。
  2. 由穿戴式应用创建通知。

在这两种情况下,开发者都使用 NotificationCompat.Builder 类创建通知。当您使用 builder 类构建通知时,系统负责正确显示通知。

例如,当您从移动应用发出通知时,每条通知都会显示为通知流中的一张卡片。

通知卡片

图 1. 在手机和手表上显示的同一通知。

为获得最佳效果,请使用某个 NotificationCompat.Style 子类。

注意:使用 RemoteViews 的通知的自定义布局会被去掉,穿戴式设备仅显示文本和图标。不过,您可以创建使用自定义卡片布局的自定义通知,自定义卡片布局适合在手表上使用。

建议在穿戴式设备上使用的通知

我们建议所有通知都首先考虑使用展开式通知,因为此类通知是与穿戴式设备用户互动的理想方式。通知栏中显示的是收起状态的通知,一目了然地显示简短信息。如果用户点按通知,通知便会展开,显示更多可滚动浏览的内容和相关操作,提供沉浸式体验。

创建展开式通知的方式与您在移动设备上使用任何 NotificationCompat.Style 子类创建展开式通知一样。

例如,使用 NotificationCompat.MessagingStyle 的标准通知如下所示: 展开式通知

图 2. Wear OS 上的 MessagingStyle 通知示例。

可以看到,在展开状态下,该通知底部堆叠排列了多项操作

若要查看 NotificationCompat.BigPictureStyleNotificationCompat.BigTextStyleNotificationCompat.InboxStyleNotificationCompat.MessagingStyle 的示例,请参阅 GitHub 上的通知示例

提示:如果通知包含“回复”操作(例如即时通讯应用的通知),您可以增强通知的这一行为。例如,您可以启用直接从穿戴式设备进行语音输入回复的功能,或者使用 setChoices() 预定义文本回复。如需了解详情,请阅读添加回复按钮

避免重复通知

默认情况下,通知会从配对手机应用桥接到配对手表。如果您尚未安装穿戴式应用,这是一个不错的选择。

然而,如果您构建了独立手表应用,同时还有配对手机应用,这些应用可能会创建重复的通知。

Wear OS 提供了一种使用桥接 API 停止接收重复通知的方式。如需了解详情,请阅读 Wear 上的通知桥接模式

向通知中添加穿戴式设备专属功能

如果您需要向通知中添加穿戴式设备专属功能(如在穿戴式设备通知中隐藏应用图标,或让用户使用语音输入口述文本回复),可以使用 NotificationCompat.WearableExtender 类指定选项。如要使用此 API,请执行以下操作:

  1. 创建一个 WearableExtender 实例,为通知设置穿戴式设备专属选项。
  2. 创建一个 NotificationCompat.Builder 实例,为通知设置所需属性,如本课程前面所述。
  3. 对通知调用 extend() 并传入 WearableExtender。该操作会将穿戴式设备选项应用于通知。
  4. 调用 build() 以构建通知。

注意:如果您使用框架的 NotificationManagerNotificationCompat.WearableExtender 的某些功能将不起作用,因此请务必使用 NotificationCompat

您可以在用户的设备之间同步通知的关闭(取消)行为。如需同步关闭行为,请使用 setDismissalId() 方法。当您调用 setDismissalId() 方法时,为每条通知传递一个字符串形式的全局唯一 ID。相应通知关闭后,手表和配对手机上具有同一关闭 ID 的所有其他通知也会关闭。如需检索关闭 ID,请使用 getDismissalId()

指定仅限穿戴式设备的操作

如果要在手表和手机上提供不同的操作,请使用 WearableExtender.addAction()。使用此方法添加操作后,穿戴式设备不会显示任何使用 NotificationCompat.Builder.addAction() 添加的其他操作。使用 WearableExtender.addAction() 添加的操作只会出现在穿戴式设备上,而不会出现在手机上。