Уведомления на часах используют те же API и имеют ту же структуру, что и уведомления на телефонах.
Уведомления могут появляться на часах двумя способами:
- Мобильное приложение создает уведомление, и система автоматически пересылает его на часы.
- Приложение для носимого устройства создает уведомление.
Для обоих сценариев используйте класс NotificationCompat.Builder
для создания уведомлений. Когда вы создаете уведомления с помощью класса builder, система заботится о правильном отображении уведомлений. Например, когда вы отправляете уведомление из своего мобильного приложения, каждое уведомление отображается как карточка в Notification Stream.
Ознакомьтесь со следующим примером, чтобы увидеть, как отображаются уведомления.
Рисунок 1. Одно и то же уведомление, отображаемое на телефоне и на часах.
Для достижения наилучших результатов используйте один из подклассов NotificationCompat.Style
.
Примечание: использование RemoteViews
удаляет уведомления с пользовательских макетов, и на носимом устройстве отображаются только текст и значки.
Рекомендуемые уведомления для носимых устройств
Используйте расширяемые уведомления в качестве отправной точки для всех уведомлений, поскольку это отличный способ привлечь пользователей носимых устройств. Свернутое состояние отображается в области уведомлений для короткого, скользящего опыта. Если пользователь нажимает на него, уведомление расширяется, открывая захватывающий, прокручиваемый опыт дополнительного контента и действий.
Вы можете создать расширяемое уведомление так же, как и на мобильном устройстве, используя любой из подклассов NotificationCompat.Style
. Например, стандартное уведомление с использованием NotificationCompat.MessagingStyle
выглядит так:
Рисунок 2. Пример уведомления MessagingStyle
на Wear OS.
Вы можете видеть, что уведомление имеет несколько действий, сгруппированных в нижней части развернутого состояния.
Примеры NotificationCompat.BigPictureStyle
, NotificationCompat.BigTextStyle
, NotificationCompat.InboxStyle
и NotificationCompat.MessagingStyle
смотрите в примере уведомлений на GitHub.
Совет: Если ваши уведомления включают действие «ответить», например, для приложения обмена сообщениями, вы можете улучшить поведение уведомления. Например, вы можете включить голосовой ввод ответов непосредственно с носимых устройств или предопределенные текстовые ответы с помощью setChoices()
. Для получения дополнительной информации прочтите раздел Добавить кнопку ответа .
Избегайте дублирования уведомлений
По умолчанию уведомления передаются из сопутствующего приложения телефона на любые сопряженные часы. Это отличный вариант, если у вас не установлено приложение для носимых устройств.
Однако если вы создадите отдельное приложение для часов и сопутствующее приложение для телефона, приложения будут создавать дублирующие уведомления.
Wear OS предоставляет способ остановить дублирование уведомлений с помощью API Bridging. Это особенно важно для приложений на устройствах под управлением Wear OS 5 или выше, поскольку некоторые уведомления, которые можно закрыть на мобильном устройстве, нельзя закрыть на устройстве Wear OS. Для получения дополнительной информации прочтите раздел Параметры Bridging для уведомлений .
Добавьте в уведомление функции, характерные для носимых устройств
Если вам нужно добавить в уведомление функции, специфичные для носимых устройств, например, скрыть значок приложения из уведомления на носимом устройстве или позволить пользователям диктовать текстовый ответ с помощью голосового ввода, вы можете использовать класс NotificationCompat.WearableExtender
для указания параметров. Чтобы использовать этот API, выполните следующие действия:
- Создайте экземпляр
WearableExtender
, установив параметры уведомления, специфичные для носимого устройства. - Создайте экземпляр
NotificationCompat.Builder
, задав нужные свойства для вашего уведомления, как описано ранее в этом руководстве. - Вызовите
extend()
для уведомления и передайтеWearableExtender
. Это применит параметры носимых устройств к уведомлению. - Вызовите
build()
для создания уведомления.
Примечание: Если вы используете NotificationManager
фреймворка, некоторые функции NotificationCompat.WearableExtender
не работают, поэтому обязательно используйте NotificationCompat
.
Вы можете синхронизировать отмену или удаление уведомлений на всех устройствах пользователя. Чтобы синхронизировать удаление, используйте метод setDismissalId()
. Для каждого уведомления передайте глобальный уникальный идентификатор в виде строки при вызове setDismissalId()
. Когда уведомление удаляется, все остальные уведомления с тем же идентификатором удаления удаляются на часах и на сопутствующем телефоне. Чтобы получить идентификатор удаления, используйте getDismissalId()
.
Укажите действия, доступные только для носимых устройств
Если вы хотите, чтобы на часах и телефоне были доступны разные действия, используйте WearableExtender.addAction()
. После добавления действия с помощью этого метода носимое устройство не будет отображать никаких других действий, добавленных с помощью NotificationCompat.Builder.addAction()
. Действия, добавленные с помощью WearableExtender.addAction()
отображаются только на носимом устройстве, а не на телефоне.
Запустите приложение для телефона с носимого устройства
Если вы используете мостовые уведомления, любое уведомление автоматически включает кнопку для запуска приложения на телефоне. Однако, если вы используете локальное уведомление, созданное на часах, используйте следующие шаги для создания кнопки, которая запускает приложение на телефоне:
- Создайте новое
Activity
, расширяющееConfirmationActivity
. - Используйте
RemoteActivityHelper
в новомActivity
для запуска приложения для телефона. - При создании
Intent
запуститьActivity
из уведомления установите для дополнительного параметраEXTRA_ANIMATION_TYPE
значениеOPEN_ON_PHONE_ANIMATION
.
Примечание: Вы не можете использовать BroadcastReceiver
в качестве цели действия уведомления.