Новости в реальном времени позволяют пользователям следить за важными событиями, не открывая приложение. Система продвигает уведомления о новостях в реальном времени, но пользователи могут временно закрыть их или понизить до стандартных уведомлений. Продвигаемые уведомления показываются на более заметных местах, например вверху панели уведомлений и заблокированного экрана, а также в виде чипа в строке состояния. Уведомления о новостях в реальном времени должны соответствовать принципам уведомлений, чтобы предоставлять краткую, своевременную и актуальную информацию.
Карточки продвигаемых уведомлений имеют следующие характеристики:
- Развернуто по умолчанию
- Несворачиваемый
Чтобы уведомление считалось новостью в реальном времени, оно должно соответствовать следующим требованиям:
- Допустимые значения: Standard Style,
BigTextStyle,CallStyle,ProgressStyle,MetricStyle. - В манифесте Android должно быть запрошено следующее разрешение, не являющееся динамическим:
android.permission.POST_PROMOTED_NOTIFICATIONS. - Запрос на продвижение должен быть отправлен с помощью
EXTRA_REQUEST_PROMOTED_ONGOINGилиNotificationCompat.Builder#setRequestPromotedOngoing. - Необходимо указать значение
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– это действие, которое позволяет приложениям перенаправлять пользователей в настройки, чтобы включить эту функцию.
Критерии использования
Используйте обновления в реальном времени для текущих, инициированных пользователем и срочных действий.
Текущее
Обновление в реальном времени должно представлять действие, которое активно выполняется и имеет четкое начало и конец. Если событие уже произошло, не используйте виджеты Live Update. Вместо этого используйте стандартное уведомление. Это также относится к событиям, которые ещё не начались, хотя для событий, которые скоро начнутся, можно использовать Live Update.
Обновления в реальном времени представляют текущие действия. Не используйте обновления в реальном времени, чтобы ускорить доступ к функциям приложения. Для этого используйте виджет приложения или параметр быстрых настроек.
- Примеры допустимого использования: активная навигация, текущие телефонные звонки, активное отслеживание поездки или доставки еды.
- Недопустимые варианты использования. Реклама, промоакции, сообщения чата, оповещения, предстоящие мероприятия в календаре и быстрый доступ к функциям приложения.
Включается пользователем
Большинство обновлений в реальном времени должны представлять действия, которые явно запускаются пользователем, например начало тренировки, запуск навигации за рулем или вызов такси. Не показывайте в виджете Live Update информацию об окружении пользователя, его интересах или предстоящих событиях. Не разрешайте сторонним действиям генерировать обновления в реальном времени.
Иногда пользователь может выполнить действие, которое инициирует активность в будущем. Например, если пользователь покупает билеты на самолет или концерт, регистрируется на турнир или иным образом указывает, что планирует посетить мероприятие, привязанное к определенному времени. В таких случаях может быть целесообразно автоматически показывать новости в реальном времени, когда начинается запланированное событие. Однако приложения должны настраивать триггеры так, чтобы они появлялись только тогда, когда действие неизбежно. Если пользователь явно указывает, что хочет начать отслеживать фоновое событие, например спортивный матч, вы можете начать публиковать новости в реальном времени для этого события. Однако в связанном уведомлении также должно быть действие Открепить.
Срочные
Показывайте обновление в реальном времени, только если оно требует внимания пользователя на протяжении всего действия. Основной вариант использования уведомлений в реальном времени – мониторинг, когда пользователь получает значительную выгоду, взглянув на уведомление в реальном времени, чтобы следить за развивающимся состоянием активности.
Обновления в реальном времени часто подходят для действий, которые переключаются между обновлениями в реальном времени и обычными уведомлениями. Например, уведомление о посадочном талоне уместно за несколько часов до вылета, но оно должно стать обновлением в реальном времени, только когда у пользователя возникнет острая необходимость, например когда он прибудет в аэропорт или на место проведения мероприятия или после начала посадки. А вот для отслеживания посылки виджет Live Update не подходит, потому что пользователю не нужно постоянно следить за этим.
Рекомендации по улучшению интерфейса
Используйте значок трекера, чтобы визуализировать состояние. Эти данные могут обновляться динамически.
Если расчетное время прибытия вычисляется или пока недоступно, не показывайте пустую область. Добавьте текст-плейсхолдер, например "Думаю…" или "Перестраиваю маршрут…", чтобы показать, что система работает, как показано в примере.
Чипы статуса
Чипы статуса позволяют пользователям следить за новостями в реальном времени, когда уведомление не видно. Используйте setShortCriticalText или setWhen, чтобы передавать важную информацию о состоянии уведомления, ориентированного на прогресс.
Notification.Builder#setSmallIcon.
Notification.Builder#setShortCriticalText, чтобы показать абсолютное время.
Notification.Builder#setShortCriticalText, чтобы передать важную информацию.Время
Время запускает обратный отсчет для продолжительности уведомления, если только уведомление не отклонено или не обновлено. Ниже описано, как работает время в различных ситуациях.
- Если до указанного времени осталось не менее двух минут, например текущее время – 10:05, а указанное – 10:10, то на чипе будет написано 5 мин.
- Если время уже прошло, текст не показывается.
- Если вы используете Chronometer, на чипе можно показывать таймер.
Ознакомьтесь с
setUsesChronometerиsetChronometerCountdown. Таймер Chronometer показывается в чипе, пока его значение положительное. - Если вы не хотите, чтобы в уведомлении показывалось время, используйте
setShowWhen, чтобыFALSE.
Внешний вид чипа статуса
Чип статуса всегда содержит значок и может содержать текст. Максимальная ширина чипа – 96 dp. Текст будет показан, только если он полностью помещается в чип. Текст показывается в зависимости от следующих критериев:
- Если в тексте меньше семи символов, он показывается полностью.
- Если будет показано меньше половины текста, оставьте только значок.
- Если можно показать больше половины текста, покажите как можно больше.
Wear OS
Новости в реальном времени передаются на некоторые подключенные устройства Wear OS. Подробнее о том, как работает перенос и как создавать локальные обновления в реальном времени для Wear OS, рассказывается в руководстве по обновлениям в реальном времени для Wear OS.
Dismissal
Пользователи могут управлять видимостью уведомлений на панели уведомлений. Публикация нежелательных уведомлений в реальном времени может привести к тому, что пользователи отзовут у приложения разрешение на публикацию.
Чтобы пользователи не отключали обновления в реальном времени, не публикуйте информацию, которую они могут счесть неинтересной. Не публикуйте повторно новости в реальном времени, которые пользователь отклонил. Чтобы обнаружить отклоненные обновления, используйте setDeleteIntent.
Чтобы поэкспериментировать с этими API, воспользуйтесь примером приложения.
Часто задаваемые вопросы
Вопрос. Что означает белая точка в конце индикатора выполнения?
Ответ. Белая точка в конце индикатора выполнения визуально обозначает его конец.
Вопрос. Почему для новостей в реальном времени не поддерживаются специальные уведомления?
Ответ. Специальные уведомления усложняют тестирование и ухудшают UX, поскольку их поведение значительно различается в зависимости от версии Android и производителя устройства. Не используйте специальные уведомления с помощью RemoteViews.