Уведомления на Wear OS

Уведомления на часах используют те же API и имеют ту же структуру, что и уведомления на телефонах.

Уведомления на часах могут отображаться двумя способами:

  1. Мобильное приложение создает уведомление, и система автоматически передает это уведомление на часы.
  2. Приложение для носимых устройств создает уведомление.

В обоих случаях используйте класс NotificationCompat.Builder для создания уведомлений. При создании уведомлений с помощью класса Builder система автоматически позаботится о корректном отображении уведомлений. Например, при отправке уведомления из мобильного приложения каждое уведомление отображается в виде карточки в ленте уведомлений.

Ознакомьтесь со следующим примером, чтобы увидеть, как отображаются уведомления. уведомительные карточки

Рисунок 1. Одно и то же уведомление отображается на телефоне и на часах.

Для достижения наилучших результатов используйте один из подклассов NotificationCompat.Style .

Примечание: Использование RemoteViews удаляет пользовательские макеты уведомлений, и носимое устройство отображает только текст и значки.

Рекомендуемые уведомления для носимых устройств

В качестве отправной точки для всех уведомлений используйте разворачиваемые уведомления, поскольку это отличный способ привлечь внимание пользователей носимых устройств. В свернутом состоянии уведомление отображается в панели уведомлений для быстрого и наглядного просмотра. Если пользователь нажмет на него, уведомление развернется, открывая захватывающий, прокручиваемый интерфейс с дополнительным контентом и действиями.

Вы можете создать расширяемое уведомление так же, как и на мобильных устройствах, используя любой из подклассов NotificationCompat.Style . Например, стандартное уведомление, созданное с помощью NotificationCompat.MessagingStyle выглядит следующим образом: расширяемое уведомление

Рисунок 2. Пример уведомления MessagingStyle в Wear OS.

Как видите, в нижней части развернутого состояния уведомления расположено несколько действий, расположенных друг над другом.

Совет: Если ваши уведомления содержат действие «ответить», например, в мессенджере, вы можете расширить функциональность уведомления. Например, вы можете включить голосовые ответы непосредственно с носимого устройства или предопределенные текстовые ответы с помощью setChoices() . Для получения дополнительной информации см. раздел «Добавление кнопки ответа» .

Избегайте дублирования уведомлений.

По умолчанию уведомления передаются из сопутствующего приложения на телефоне на все сопряженные часы. Это отличный вариант, если у вас не установлено приложение для носимых устройств.

Однако, если вы создадите отдельное приложение для часов и сопутствующее приложение для телефона, приложения будут создавать дублирующие уведомления.

Wear OS предоставляет способ предотвращения дублирования уведомлений с помощью API-интерфейсов Bridging. Это особенно важно для приложений на устройствах под управлением Wear OS 5 или более поздней версии, поскольку некоторые уведомления, которые можно закрыть на мобильном устройстве, нельзя закрыть на устройстве Wear OS. Для получения дополнительной информации см. раздел «Параметры Bridging для уведомлений» .

Добавьте в уведомление функции, специфичные для носимых устройств.

Если вам необходимо добавить в уведомление функции, специфичные для носимых устройств, например, скрыть значок приложения из уведомления или позволить пользователям диктовать текстовый ответ с помощью голосового ввода, вы можете использовать класс NotificationCompat.WearableExtender для указания параметров. Для использования этого API выполните следующие действия:

  1. Создайте экземпляр WearableExtender , задав параметры уведомления, специфичные для данного носимого устройства.
  2. Создайте экземпляр класса NotificationCompat.Builder , задав необходимые свойства для вашего уведомления, как описано ранее в этом руководстве.
  3. Вызовите extend() для уведомления и передайте в него объект WearableExtender . Это применит параметры носимого устройства к уведомлению.
  4. Вызовите build() для создания уведомления.

Примечание: Если вы используете NotificationManager из фреймворка, некоторые функции NotificationCompat.WearableExtender не будут работать, поэтому убедитесь, что используете NotificationCompat .

Вы можете синхронизировать закрытие или отмену уведомлений на всех устройствах пользователя. Для синхронизации закрытия используйте метод setDismissalId() . Для каждого уведомления передайте глобально уникальный идентификатор в виде строки при вызове setDismissalId() . Когда уведомление закрывается, все остальные уведомления с тем же идентификатором закрытия закрываются на часах и на сопутствующем телефоне. Чтобы получить идентификатор закрытия, используйте getDismissalId() .

Укажите действия, выполняемые только с помощью носимых устройств.

Если вы хотите, чтобы разные действия были доступны на часах и телефоне, используйте WearableExtender.addAction() . После добавления действия с помощью этого метода носимое устройство не будет отображать другие действия, добавленные с помощью NotificationCompat.Builder.addAction() . Действия, добавленные с помощью WearableExtender.addAction() отображаются только на носимом устройстве, а не на телефоне.

Запустите приложение на телефоне с носимого устройства.

Если вы используете уведомления, созданные на основе моста, любое уведомление автоматически включает кнопку для запуска приложения на телефоне. Однако, если вы используете локальное уведомление, созданное на часах, выполните следующие шаги, чтобы создать кнопку, запускающую приложение на телефоне:

  1. Создайте новое Activity , наследующее ConfirmationActivity .
  2. Используйте RemoteActivityHelper в новом Activity , чтобы запустить мобильное приложение.
  3. При создании Intent для запуска Activity из уведомления установите параметр EXTRA_ANIMATION_TYPE в значение OPEN_ON_PHONE_ANIMATION .
Этот подход направляет пользователя к взаимодействию на его телефоне и соответствует требованиям платформы для запуска фоновых процессов.

Примечание: В качестве целевого объекта для действия уведомления нельзя использовать BroadcastReceiver .