Wear OS 上的通知

手表的通知使用与手机通知相同的 API 且具有相同的结构。

通知可以通过两种方式出现在手表上

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

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

查看以下示例,了解通知的显示方式。notification-cards

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

为了获得最佳效果,请使用NotificationCompat.Style的子类之一。

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

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

将可扩展通知作为所有通知的起点,因为它们是吸引可穿戴设备用户的好方法。折叠状态在通知栏中短暂显示,以便用户快速查看。如果用户点击它,通知将展开,显示更多内容和操作的沉浸式可滚动体验。

您可以像在手机上一样创建可扩展通知,使用任何NotificationCompat.Style子类。例如,使用NotificationCompat.MessagingStyle的标准通知如下所示:expandable-notification

图 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()构建通知。

注意:如果您使用框架的NotificationManager,则NotificationCompat.WearableExtender中的一些功能将无法正常工作,因此请确保使用 NotificationCompat

您可以跨用户的设备同步通知的关闭或取消操作。要同步关闭操作,请使用 setDismissalId()方法。对于每个通知,在调用setDismissalId()时,请将全局唯一 ID(以字符串形式)作为参数传递。当通知被关闭时,手表和配套手机上所有具有相同关闭 ID 的其他通知也将被关闭。要检索关闭 ID,请使用 getDismissalId()

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

如果希望手表和手机上提供不同的操作,则使用 WearableExtender.addAction()。使用此方法添加操作后,可穿戴设备将不会显示使用 NotificationCompat.Builder.addAction()添加的其他任何操作。使用WearableExtender.addAction()添加的操作仅显示在可穿戴设备上,手机上不会显示。