Уведомления на часах используют те же API и имеют ту же структуру, что и уведомления на телефонах.
Уведомления могут появляться на часах двумя способами:
- Мобильное приложение создает уведомление, и система автоматически передает это уведомление на часы.
- Носимое приложение создает уведомление.
В обоих сценариях используйте класс NotificationCompat.Builder
для создания уведомлений. Когда вы создаете уведомления с помощью класса builder, система заботится о правильном отображении уведомлений. Например, когда вы отправляете уведомление из мобильного приложения, каждое уведомление отображается в виде карточки в потоке уведомлений.
Просмотрите следующий пример, чтобы увидеть, как отображаются уведомления.
Для достижения наилучших результатов используйте один из подклассов NotificationCompat.Style
.
Примечание. При использовании RemoteViews
уведомления о пользовательских макетах удаляются, а на носимом устройстве отображаются только текст и значки.
Рекомендуемые уведомления для носимых устройств
Используйте расширяемые уведомления в качестве отправной точки для всех уведомлений, поскольку они являются отличным способом привлечения пользователей носимых устройств. Свернутое состояние отображается в области уведомлений для краткого и удобного просмотра. Если пользователь нажимает на него, уведомление расширяется, открывая захватывающий, прокручиваемый опыт дополнительного контента и действий.
Вы можете создать расширяемое уведомление так же, как на мобильном устройстве, используя любой из подклассов NotificationCompat.Style
. Например, стандартное уведомление с использованием NotificationCompat.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()
. При отклонении уведомления все остальные уведомления с тем же идентификатором отклонения закрываются на часах и на телефоне-компаньоне. Чтобы получить идентификатор увольнения, используйте getDismissalId()
.
Укажите действия только для носимых устройств
Если вы хотите, чтобы на часах и телефоне были доступны разные действия, используйте WearableExtender.addAction()
. После добавления действия с помощью этого метода носимое устройство не отображает никаких других действий, добавленных с помощью NotificationCompat.Builder.addAction()
. Действия, добавленные с помощью WearableExtender.addAction()
отображаются только на носимом устройстве, а не на телефоне.