Wear OS 上的通知

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

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

  1. 移动应用创建通知后,系统会自动将该通知桥接到手表。
  2. 可穿戴设备应用创建通知。

对于这两种情况,都请使用 NotificationCompat.Builder 类来创建通知。当您使用构建器类构建通知时,系统会负责正确显示通知。例如,当您从移动应用发出通知时,每条通知都会在通知流中显示为一张卡片。

查看以下示例,了解通知的显示方式。通知卡片

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

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

注意:使用 RemoteViews 会去除通知的自定义布局,可穿戴设备仅显示文本和图标。

适用于可穿戴设备的推荐通知

将可展开通知用作所有通知的起点,因为它们是吸引可穿戴设备用户的好方法。收起状态会显示在通知托盘中,提供短暂、一目了然的体验。如果用户点按它,通知会展开,显示沉浸式、可滚动的额外内容和操作体验。

您可以像在移动设备上一样,使用 NotificationCompat.Style 的任何子类来创建可展开通知。例如,使用 NotificationCompat.MessagingStyle 的标准通知如下所示:可展开通知

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

您可以看到该通知在展开状态底部堆叠了多个操作

有关 NotificationCompat.BigPictureStyleNotificationCompat.BigTextStyleNotificationCompat.InboxStyleNotificationCompat.MessagingStyle 的示例,请查看 GitHub 上的通知示例

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

避免重复通知

默认情况下,通知会从配套手机应用桥接到任何配对手表。如果您未安装可穿戴设备应用,这是一个很好的选择。

但是,如果您构建一个独立的手表应用和一个配套手机应用,这些应用会创建重复通知。

Wear OS 提供了一种通过桥接 API 停止重复通知的方法。这对于运行 Wear OS 5 或更高版本的设备上的应用尤其重要,因为某些在移动设备上可以关闭的通知在 Wear OS 设备上无法关闭。如需了解详情,请阅读通知的桥接选项

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

如果您需要向通知添加可穿戴设备专属功能,例如从可穿戴设备通知中隐藏应用图标,或者允许用户通过语音输入听写文本回复,您可以使用 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() 添加的操作只会显示在可穿戴设备上,而不会显示在手机上。