手表上的通知使用与手机通知相同的 API 和结构。
通知可以在手表上通过两种方式显示
- 移动应用创建通知后,系统会自动将该通知桥接到手表。
- 可穿戴设备应用创建通知。
对于这两种情况,都请使用 NotificationCompat.Builder
类来创建通知。当您使用构建器类构建通知时,系统会负责正确显示通知。例如,当您从移动应用发出通知时,每条通知都会在通知流中显示为一张卡片。
查看以下示例,了解通知的显示方式。
图 1. 手机和手表上显示的相同通知。
使用 NotificationCompat.Style
的某个子类,以获得最佳效果。
注意:使用 RemoteViews
会去除通知的自定义布局,可穿戴设备仅显示文本和图标。
适用于可穿戴设备的推荐通知
将可展开通知用作所有通知的起点,因为它们是吸引可穿戴设备用户的好方法。收起状态会显示在通知托盘中,提供短暂、一目了然的体验。如果用户点按它,通知会展开,显示沉浸式、可滚动的额外内容和操作体验。
您可以像在移动设备上一样,使用 NotificationCompat.Style
的任何子类来创建可展开通知。例如,使用 NotificationCompat.MessagingStyle
的标准通知如下所示:
图 2. Wear OS 上的 MessagingStyle
通知示例。
您可以看到该通知在展开状态底部堆叠了多个操作。
有关 NotificationCompat.BigPictureStyle
、NotificationCompat.BigTextStyle
、NotificationCompat.InboxStyle
和 NotificationCompat.MessagingStyle
的示例,请查看 GitHub 上的通知示例。
提示:如果您的通知包含“回复”操作(例如即时通讯应用),您可以增强通知的行为。例如,您可以使用 setChoices()
启用直接从可穿戴设备进行语音输入回复,或使用预定义文本回复。如需了解详情,请阅读添加回复按钮。
避免重复通知
默认情况下,通知会从配套手机应用桥接到任何配对手表。如果您未安装可穿戴设备应用,这是一个很好的选择。
但是,如果您构建一个独立的手表应用和一个配套手机应用,这些应用会创建重复通知。
Wear OS 提供了一种通过桥接 API 停止重复通知的方法。这对于运行 Wear OS 5 或更高版本的设备上的应用尤其重要,因为某些在移动设备上可以关闭的通知在 Wear OS 设备上无法关闭。如需了解详情,请阅读通知的桥接选项。
向通知添加可穿戴设备专属功能
如果您需要向通知添加可穿戴设备专属功能,例如从可穿戴设备通知中隐藏应用图标,或者允许用户通过语音输入听写文本回复,您可以使用 NotificationCompat.WearableExtender
类来指定选项。要使用此 API,请执行以下操作:
- 创建
WearableExtender
实例,并为通知设置可穿戴设备专属选项。 - 创建
NotificationCompat.Builder
实例,并按本指南前面所述设置通知的所需属性。 - 在通知上调用
extend()
并传入WearableExtender
。这会将可穿戴设备选项应用于通知。 - 调用
build()
以构建通知。
注意:如果您使用框架的 NotificationManager
,NotificationCompat.WearableExtender
的某些功能将不起作用,因此请务必使用 NotificationCompat
。
您可以在用户的设备之间同步通知的关闭或取消操作。要同步关闭操作,请使用 setDismissalId()
方法。对于每个通知,在调用 setDismissalId()
时传入一个全局唯一的字符串 ID。当通知被关闭时,所有具有相同关闭 ID 的其他通知也会在手表和配套手机上被关闭。要检索关闭 ID,请使用 getDismissalId()
。
指定仅限可穿戴设备的操作
如果您希望在手表和手机上提供不同的操作,请使用 WearableExtender.addAction()
。通过此方法添加操作后,可穿戴设备不会显示任何通过 NotificationCompat.Builder.addAction()
添加的其他操作。通过 WearableExtender.addAction()
添加的操作只会显示在可穿戴设备上,而不会显示在手机上。