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

Рекламные карточки-уведомления имеют следующие характеристики внешнего вида:
- Развернуто по умолчанию
- Неразборный
Чтобы ваше уведомление считалось оперативным обновлением, оно должно соответствовать следующим требованиям:
- Должен быть Standard/No Style,
BigTextStyle
,CallStyle
илиProgressStyle
. - Необходимо запросить следующее не-runtime-разрешение в манифесте Android
android.permission.POST_PROMOTED_NOTIFICATIONS
. - Необходимо запросить повышение с помощью
EXTRA_REQUEST_PROMOTED_ONGOING
илиNotificationCompat.Builder#requestPromotedOngoing
. - Должно быть
ongoing
(установитеFLAG_ONGOING_EVENT
). - Необходимо иметь установленный
contentTitle
. - НЕ должно быть установлено никаких
customContentView
(никакихRemoteViews
). - НЕ ДОЛЖНО быть сводкой группы, использующей
setGroupSummary
. - НЕ следует
setColorized
вTRUE
. - Канал уведомлений НЕ должен иметь
IMPORTANCE_MIN
.
Характеристики продвижения
Следующие API помогут вам определить, будет ли система продвигать ваше уведомление:
-
Notification.FLAG_PROMOTED_ONGOING
указывает, продвигается ли уведомление. -
Notification.hasPromotableCharacteristics()
проверяет, может ли система продвигать уведомление. Этот метод не учитывает, отключил ли пользователь обновления в настройках приложения. -
NotificationManager.canPostPromotedNotifications()
проверяет, может ли ваше приложение публиковать продвигаемое уведомление, например, включил или отключил ли пользователь эту функцию в настройках. -
Settings.ACTION_MANAGE_APP_PROMOTED_NOTIFICATIONS
— это действие намерения, которое позволяет приложениям отправлять пользователей в настройки для включения этой функции.
Критерии использования
Используйте функцию оперативных обновлений для текущих, инициированных пользователем и срочных действий.
Непрерывный
Оповещение в режиме реального времени должно отражать активное действие, имеющее чёткое начало и конец. Если действие произошло в прошлом, не используйте оповещение в режиме реального времени. Вместо этого используйте стандартное уведомление. Это также относится к событиям, которые ещё не начались, хотя события, которые вот-вот начнутся, могут использовать оповещение в режиме реального времени.
Обновления в режиме реального времени представляют собой текущие действия. Не используйте обновления в режиме реального времени для ускоренного доступа к функциям приложения. Для этого используйте виджет приложения или настраиваемую плитку быстрых настроек.
- Надлежащее использование: активная навигация, текущие телефонные звонки, активное отслеживание совместных поездок и активное отслеживание доставки еды.
- Ненадлежащее использование: реклама, рекламные акции, сообщения чата, оповещения, предстоящие события календаря и быстрый доступ к функциям приложения.
Инициировано пользователем
Большинство оперативных обновлений должны отражать действия, которые явно инициируются пользователем, например, начало тренировки, включение навигации или вызов попутчика. Не отображайте в оперативных обновлениях дополнительную информацию, например, об окружающей среде, интересах или предстоящих событиях пользователя. Не допускайте, чтобы действия, инициированные другими лицами, приводили к созданию оперативных обновлений.
Иногда пользователь может выполнить действие, которое инициирует активность, запланированную на определённый период в будущем. Например, если пользователь покупает билеты на самолёт или концерт, регистрируется на турнир или иным образом указывает на своё будущее посещение мероприятия, привязанного к определённому времени. В таких случаях может быть целесообразно автоматически показывать уведомление в режиме реального времени при начале запланированного события. Однако приложения должны настроить свои триггеры так, чтобы они появлялись только в момент непосредственного начала активности. Если пользователь явно указывает, что хочет начать отслеживать фоновое событие, например, спортивную игру, вы можете начать публиковать уведомления в режиме реального времени для этого события. Однако в соответствующее уведомление следует также включить действие «Открепить» .
Чувствительный ко времени
Показывайте обновления в режиме реального времени только в том случае, если это требует внимания пользователя на протяжении всего действия. Одним из ключевых вариантов использования обновлений в режиме реального времени является мониторинг, когда пользователь получает значительную выгоду от просмотра обновления в режиме реального времени, чтобы следить за развитием событий.
Оповещения в режиме реального времени часто подходят для действий, которые переходят из режима оперативных обновлений в режим обычных уведомлений. Например, показ уведомления о посадочном талоне уместен за много часов до вылета пользователя, но оповещение должно становиться оперативным только тогда, когда у пользователя возникает срочная необходимость, например, по прибытии в аэропорт или на место проведения мероприятия или после начала посадки. Оповещения в режиме реального времени, напротив, не подходят для отслеживания посылки, поскольку пользователю не нужно постоянно следить за этим.
Статусные чипы
Чипы статуса позволяют пользователям отслеживать обновления в режиме реального времени, когда уведомление не отображается. Используйте setShortCriticalText
или setWhen
чтобы передать важную информацию о состоянии уведомления, ориентированного на ход выполнения.

Notification.Builder#setSmallIcon
. 
Notification.Builder#setShortCriticalText
для отображения абсолютного времени. 
Notification.Builder#setShortCriticalText
для передачи важной информации.Когда время
По истечении этого времени запускается обратный отсчет срока действия уведомления, если только уведомление не будет закрыто или обновлено.
- Время «когда» наступит не менее чем через 2 минуты в будущем: если текущее время — 10:05, а время «когда» установлено на 10:10, то чип покажет «5мин».
- Если время наступило более чем на 1 минуту назад, уведомление не отображается.
- Если вы не хотите, чтобы уведомление, отображаемое в тени, имело время, установите для
setShowWhen
значениеFALSE
.
Внешний вид чипа статуса
Чип статуса всегда включает значок и, при необходимости, текст. Максимальная ширина чипа — 96 точек на дюйм. Отображение текста зависит от следующих критериев:
- Если менее 7 символов, покажите весь текст.
- Если отображается менее половины текста, покажите только значок.
- Если отображается больше половины текста, покажите как можно больше текста.
Увольнение
Пользователи могут управлять видимостью уведомлений в панели уведомлений. Публикация нежелательных обновлений Live Updates может привести к отзыву разрешения на публикацию у приложения.
Чтобы пользователи не могли полностью отключить обновления Live Updates, не публикуйте обновления, которые пользователи могут проигнорировать. Не публикуйте обновления Live Updates повторно, которые пользователь проигнорировал. Используйте setDeleteIntent
для обнаружения проигнорированных обновлений.
Ознакомьтесь с примером приложения , чтобы поэкспериментировать с этими API.