Уведомление — это сообщение, которое Android отображает за пределами пользовательского интерфейса вашего приложения, чтобы предоставить пользователю напоминания, сообщения от других людей или другую своевременную информацию из вашего приложения. Пользователи могут нажать на уведомление, чтобы открыть ваше приложение или выполнить действие непосредственно из уведомления.
На этой странице представлен обзор того, где появляются уведомления и доступные функции. Чтобы начать создавать уведомления, прочтите раздел Создание уведомления .
Дополнительную информацию о дизайне уведомлений и шаблонах взаимодействия см. в Руководстве по дизайну уведомлений .
Появления на устройстве
Уведомления автоматически появляются у пользователей в разных местах и форматах. Уведомление отображается в виде значка в строке состояния, более подробной записи в панели уведомлений и значка на значке приложения. Уведомления также появляются на сопряженных носимых устройствах.
Строка состояния и панель уведомлений
При отправке уведомления оно сначала отображается в виде значка в строке состояния.
Рисунок 1. Значки уведомлений отображаются в левой части строки состояния.
Пользователи могут провести пальцем вниз по строке состояния, чтобы открыть панель уведомлений, где они могут просмотреть более подробную информацию и выполнить действия с уведомлением.
Рисунок 2. Уведомления в панели уведомлений.
Пользователи могут перетащить уведомление в ящике вниз, чтобы открыть расширенный вид, который показывает дополнительный контент и кнопки действий, если они предусмотрены. Начиная с Android 13, этот расширенный вид включает кнопку, которая позволяет пользователям останавливать приложение, имеющее текущие службы переднего плана .
Уведомление остается видимым в панели уведомлений до тех пор, пока оно не будет закрыто приложением или пользователем.
Уведомление о заголовке
Начиная с Android 5.0, уведомления могут ненадолго появляться в плавающем окне, называемом уведомлением head-up . Такое поведение обычно применяется для важных уведомлений, о которых пользователь должен знать немедленно, и оно появляется только в том случае, если устройство разблокировано.
Рисунок 3. Всплывающее уведомление появляется поверх активного приложения.
Уведомление Heads-up появляется, когда ваше приложение выдает уведомление. Оно исчезает через мгновение, но остается видимым в панели уведомлений, как обычно.
Условия, которые могут вызвать отправку уведомлений, включают в себя следующее:
Действия пользователя происходят в полноэкранном режиме, например, когда приложение использует
fullScreenIntent
.Уведомление имеет высокий приоритет и использует рингтоны или вибрацию на устройствах под управлением Android 7.1 (уровень API 25) и ниже.
Канал уведомлений имеет большое значение на устройствах под управлением Android 8.0 (уровень API 26) и выше.
Экран блокировки
Начиная с Android 5.0 уведомления могут появляться на экране блокировки.
Вы можете программно настроить, будут ли уведомления, отправляемые вашим приложением, отображаться на защищенном экране блокировки, а если да, то и уровень детализации.
Пользователи могут использовать системные настройки, чтобы выбрать уровень детализации, отображаемый в уведомлениях на экране блокировки, или отключить все уведомления на экране блокировки. Начиная с Android 8.0, пользователи могут отключать или включать уведомления на экране блокировки для каждого канала уведомлений.
Рисунок 4. Уведомления на экране блокировки со скрытым конфиденциальным содержимым.
Чтобы узнать больше, см. раздел Настройка видимости экрана блокировки .
Значок значка приложения
В поддерживаемых лаунчерах на устройствах под управлением Android 8.0 (уровень API 26) и выше значки приложений обозначают новые уведомления цветным значком , известным как точка уведомления, на соответствующем значке лаунчера приложения.
Пользователи могут нажать и удерживать значок приложения, чтобы увидеть уведомления для этого приложения. Пользователи могут отклонять уведомления или действовать в соответствии с ними из этого меню, аналогично панели уведомлений.
Рисунок 5. Значки уведомлений и меню «Touch & Hold».
Чтобы узнать больше о том, как работают значки, прочитайте статью Изменение значка уведомления .
Устройства Wear OS
Если у пользователя есть сопряженное устройство Wear OS, все ваши уведомления автоматически появляются на нем, включая раскрывающиеся сведения и кнопки действий.
Вы можете улучшить опыт, настроив внешний вид уведомлений на носимых устройствах и предоставив различные действия, включая предлагаемые ответы и ответы с голосовым вводом. Для получения дополнительной информации см., как добавить в уведомление функции, характерные для носимых устройств .
Рисунок 6. Уведомления автоматически появляются на сопряженном устройстве Wear OS.
Анатомия уведомлений
Дизайн уведомления определяется системными шаблонами, а ваше приложение определяет содержимое каждой части шаблона. Некоторые детали уведомления отображаются только в развернутом виде.
Рисунок 7. Уведомление с основными данными.
Наиболее распространенные части уведомления показаны на рисунке 7 следующим образом:
- Маленький значок: обязателен; устанавливается с помощью
setSmallIcon()
. - Имя приложения: предоставлено системой.
- Метка времени: предоставляется системой, но вы можете переопределить ее с помощью
setWhen()
или скрыть с помощьюsetShowWhen(false)
. - Большая иконка: необязательная; обычно используется только для фотографий контактов. Не используйте ее для иконки приложения. Установите с помощью
setLargeIcon()
. - Заголовок: необязательно; устанавливается с помощью
setContentTitle()
. - Текст: необязательно; устанавливается с помощью
setContentText()
.
Мы настоятельно рекомендуем использовать системные шаблоны для надлежащей совместимости дизайна на всех устройствах. При необходимости вы можете создать собственный макет уведомления .
Дополнительную информацию о том, как создать уведомление с этими и другими функциями, читайте в разделе Создание уведомления .
Действия уведомления
Хотя это и не обязательно, хорошей практикой является открытие соответствующего действия приложения при нажатии на каждое уведомление. В дополнение к этому действию уведомления по умолчанию вы можете добавить кнопки действий, которые завершают задачу, связанную с приложением, из уведомления — часто без открытия действия — как показано на рисунке 8.
Рисунок 8. Уведомление с кнопками действий.
Начиная с Android 7.0 (уровень API 24) вы можете добавить действие для ответа на сообщения или ввести другой текст непосредственно из уведомления.
Начиная с Android 10 (уровень API 29) платформа может автоматически генерировать кнопки действий с предлагаемыми действиями на основе намерений.
Добавление кнопок действий подробно описано в разделе Создание уведомления .
Требуется разблокированное устройство
Пользователи могут видеть действия уведомления на экране блокировки устройства. Если действие уведомления заставляет приложение запустить активность или отправить прямой ответ, пользователи должны разблокировать устройство, прежде чем приложение сможет вызвать это действие уведомления.
На Android 12 (уровень API 31) и выше вы можете настроить действие уведомления таким образом, чтобы устройство было разблокировано, чтобы ваше приложение могло вызвать это действие, независимо от того, какой рабочий процесс оно запускает. Эта опция добавляет дополнительный уровень безопасности к уведомлениям на заблокированных устройствах.
Чтобы потребовать разблокировки устройства перед тем, как ваше приложение вызовет заданное действие уведомления, передайте значение true
в setAuthenticationRequired()
при создании действия уведомления, как показано в следующем фрагменте кода:
Котлин
val moreSecureNotification = Notification.Action.Builder(...) // This notification always requests authentication when invoked // from a lock screen. .setAuthenticationRequired(true) .build()
Ява
Notification moreSecureNotification = new Notification.Action.Builder(...) // This notification always requests authentication when invoked // from a lock screen. .setAuthenticationRequired(true) .build();
Расширяемое уведомление
По умолчанию текстовое содержимое уведомления обрезается, чтобы уместиться на одной строке. Если вы хотите, чтобы уведомление было длиннее, вы можете включить большую текстовую область, которую можно расширить, применив дополнительный шаблон, как показано на рисунке 9.
Рисунок 9. Расширяемое уведомление для большого текста.
Вы также можете создать расширяемое уведомление с изображением, в стиле входящих сообщений, с чатом или с элементами управления воспроизведением мультимедиа. Для получения дополнительной информации прочтите раздел Создание расширяемого уведомления .
Уведомления об обновлениях и группах
Чтобы не перегружать пользователей многочисленными или избыточными уведомлениями при появлении дополнительных обновлений, обновите существующее уведомление вместо того, чтобы отправлять новое, или используйте уведомления в стиле входящих сообщений для отображения обновлений разговора.
Однако если необходимо отправлять несколько уведомлений, рассмотрите возможность объединения отдельных уведомлений в группу, что доступно в Android 7.0 и выше.
Группа уведомлений позволяет вам свернуть несколько уведомлений в один пост в ящике уведомлений с резюме. Пользователь может постепенно развернуть группу уведомлений и каждое уведомление в ней для получения более подробной информации, как показано на рисунке 10.
Рисунок 10. Свернутая и развернутая группа уведомлений.
Чтобы узнать, как добавить уведомления в группу, см. раздел Создание группы уведомлений .
Каналы уведомлений
Начиная с Android 8.0 (уровень API 26) все уведомления должны быть назначены каналу, иначе они не будут отображаться. Это позволяет пользователям отключать определенные каналы уведомлений для вашего приложения вместо отключения всех ваших уведомлений. Пользователи могут управлять визуальными и звуковыми параметрами для каждого канала из настроек системы Android, как показано на рисунке 11. Пользователи также могут коснуться и удерживать уведомление, чтобы изменить поведение для связанного канала.
На устройствах под управлением Android 7.1 (уровень API 25) и ниже пользователи могут управлять уведомлениями только для каждого приложения. Каждое приложение фактически имеет только один канал на Android 7.1 и ниже.
Рисунок 11. Настройки уведомлений для приложения «Часы» и одного из его каналов.
Приложение может иметь отдельные каналы для каждого типа уведомлений, которые оно выпускает. Приложение также может создавать каналы уведомлений в ответ на выбор, сделанный пользователями. Например, вы можете настроить отдельные каналы уведомлений для каждой группы разговоров, созданной пользователем в приложении для обмена сообщениями.
Канал также является местом, где вы указываете уровень важности для ваших уведомлений на Android 8.0 и выше, поэтому все уведомления, отправленные на один и тот же канал уведомлений, имеют одинаковое поведение. Это описано в следующем разделе.
Для получения дополнительной информации см. раздел Создание и управление каналами уведомлений .
Важность уведомления
Android использует важность уведомления, чтобы определить, насколько уведомление визуально и аудиально прерывает пользователя. Чем выше важность уведомления, тем более прерывающим является уведомление.
На устройствах Android 7.1 (уровень API 25) и ниже важность уведомления определяется его priority
.
На Android 8.0 (уровень API 26) и выше важность уведомления определяется importance
канала, на котором оно размещено. Пользователи могут изменить важность канала уведомления в настройках системы, как показано на рисунке 12.
Рисунок 12. Пользователи могут изменять важность каждого канала на Android 8.0 и выше.
Возможные уровни важности и соответствующее поведение уведомлений следующие:
Срочно: издает звуковой сигнал и появляется в виде всплывающего уведомления.
Высокий: издает звук.
Средний: не издает никаких звуков.
Низкий: не издает звуков и не отображается в строке состояния.
Все уведомления, независимо от важности, отображаются в неразрушающих местах пользовательского интерфейса системы, например, в панели уведомлений и в виде значка на значке запуска. Однако вы можете изменить внешний вид значка уведомления .
Для получения более подробной информации прочтите о том, как установить важность .
Режим «Не беспокоить»
Начиная с Android 5.0 (уровень API 21) пользователи могут включить режим «Не беспокоить» , который отключает звук и вибрацию для всех уведомлений. Уведомления по-прежнему отображаются в системном пользовательском интерфейсе как обычно, если пользователь не указал иное.
В режиме «Не беспокоить» доступны три уровня:
- Полная тишина: блокирует все звуки и вибрации, в том числе от будильников, музыки, видео и игр.
- Только будильники: блокирует все звуки и вибрации, за исключением звуков и вибраций будильников.
- Только приоритет: пользователи могут настроить, какие общесистемные категории могут их прерывать, например, только будильники, напоминания, события, звонки или сообщения. Для сообщений и звонков пользователи могут фильтровать по отправителю или звонящему, как показано на рисунке 13.
Рисунок 13. Пользователи могут разрешать уведомления на основе общесистемных категорий (слева) и отправителя или звонящего (справа).
На Android 8.0 (уровень API 26) и выше пользователи могут дополнительно разрешить уведомления для категорий, специфичных для приложений, также известных как каналы, переопределяя «Не беспокоить» на основе каналов. Например, платежное приложение может иметь каналы для уведомлений, связанных со снятием средств и депозитами. Пользователь может разрешить уведомления о снятии средств, уведомления о депозитах или и то, и другое в режиме приоритета.
На устройствах под управлением Android 7.1 (уровень API 25) и ниже пользователи могут разрешать отправку уведомлений для каждого приложения, а не для каждого канала.
Чтобы настроить уведомления для этих пользовательских настроек, необходимо задать общесистемную категорию .
Уведомления для приоритетных служб
Уведомление требуется, когда ваше приложение запускает службу переднего плана — Service
, работающую в фоновом режиме, которая является долгоживущей и заметной для пользователя, например, медиаплеер. Это уведомление нельзя закрыть, как другие уведомления. Чтобы удалить уведомление, службу необходимо остановить или удалить из состояния переднего плана.
Для получения дополнительной информации прочтите Foreground services . Если вы создаете медиаплеер, прочтите также Воспроизведение медиа в фоновом режиме .
Ограничения по количеству сообщений
Начиная с Android 8.1 (уровень API 27) приложения не могут издавать звук уведомления чаще одного раза в секунду. Если ваше приложение публикует несколько уведомлений в секунду, все они отображаются так, как и ожидалось, но только первое уведомление в секунду издает звук.
Однако Android также применяет ограничение частоты обновления уведомлений. Если вы публикуете обновления одного уведомления слишком часто, например, несколько раз менее чем за одну секунду, система может отбросить обновления.
Совместимость уведомлений
Пользовательский интерфейс системы уведомлений Android и API, связанные с уведомлениями, постоянно развиваются. Чтобы использовать новейшие функции API уведомлений, поддерживая при этом старые устройства, используйте API уведомлений библиотеки поддержки, NotificationCompat
и его подклассы, а также NotificationManagerCompat
. Это позволяет избежать написания условного кода для проверки уровней API, поскольку эти API справляются с этим.
NotificationCompat
обновляется по мере развития платформы, чтобы включать в себя новейшие методы. Однако наличие метода в NotificationCompat
не гарантирует, что соответствующая функция будет доступна на старых устройствах. В некоторых случаях вызов недавно представленного API приводит к нулевой операции на старых устройствах.
Ниже приведен обзор наиболее заметных изменений поведения по уровню API для уведомлений Android.
Android 5.0, API уровня 21
Вводит экран блокировки и всплывающие уведомления.
Позволяет пользователю перевести телефон в режим «Не беспокоить» и указать, какие уведомления могут прерывать его, когда устройство находится в режиме «Только приоритет».
Добавляет методы для настройки отображения уведомления на экране блокировки, например
setVisibility()
), а также для указания «публичной» версии текста уведомления.Добавляет метод
setPriority()
, который сообщает системе, насколько прерывающим является уведомление. Например, установка приоритета на высокий уровень заставляет уведомление отображаться как уведомление с заголовком.Добавляет поддержку стеков уведомлений для устройств Android Wear (теперь Wear OS). Помещайте уведомления в стек с помощью
setGroup()
. Стеки уведомлений, позже известные как группа или пакет, не поддерживаются на планшетах или телефонах до Android 7.0 (API уровня 24).
Android 7.0, API уровня 24
Изменяет стиль шаблонов уведомлений, делая акцент на изображении героя и аватаре.
Добавляет три шаблона уведомлений: один для приложений обмена сообщениями и два других для оформления пользовательских представлений контента с расширяемыми возможностями и другими системными украшениями.
Добавляет поддержку портативных устройств, таких как телефоны и планшеты, для групп уведомлений. Использует тот же API, что и стеки уведомлений Android Wear (теперь Wear OS), представленные в Android 5.0 (API уровня 21).
Позволяет пользователям отвечать внутри уведомления с помощью встроенного ответа. Они могут вводить текст, который затем направляется в родительское приложение уведомления.
Android 8.0, API уровень 26
Позволяет помещать отдельные уведомления в определенный канал .
Позволяет пользователям отключать уведомления по каждому каналу вместо отключения всех уведомлений из приложения.
Позволяет приложениям с активными уведомлениями отображать значок уведомления поверх значка приложения на главном экране или экране запуска.
Позволяет пользователям откладывать уведомления из ящика. Вы можете установить автоматическое время ожидания для уведомления.
Позволяет установить цвет фона уведомления.
Перемещает некоторые API, касающиеся поведения уведомлений, из
Notification
вNotificationChannel
. Например, используйтеNotificationChannel.setImportance()
вместоNotificationCompat.Builder.setPriority()
для Android 8.0 и выше.
Android 13.0, API уровень 33
- Добавляет разрешение времени выполнения . Чтобы ваше приложение могло отправлять неисключительные уведомления, пользователь должен предоставить это разрешение вашему приложению.
Android 14.0, API уровень 34
Ограничивает полноэкранные уведомления о намерениях для приложений, которые предоставляют вызовы и будильники. Используйте API
NotificationManager.canUseFullScreenIntent
, чтобы проверить, есть ли у вашего приложения разрешение. Если нет, ваше приложение может использоватьACTION_MANAGE_APP_USE_FULL_SCREEN_INTENT
для запуска страницы настроек, где пользователи могут предоставить разрешение.Изменяет способ, которым пользователи получают неотключаемые уведомления, позволяя пользователям отклонять действия уведомлений, даже если установлен флаг
Notification.FLAG_ONGOING_EVENT
. Это не применяется к уведомлениямCallStyle
, если установлен флагNotification.FLAG_ONGOING_EVENT
, или к контроллеру политики устройства (DPC) и поддерживающим пакетам для предприятий. Это также не применяется, когда телефон заблокирован или если пользователь выбирает Очистить все .
Поведение уведомлений
Остывать
Android 15.0, API уровень 35
Android 15 представляет функцию охлаждения уведомлений, которая направлена на улучшение восприятия уведомлений, которые приходят в быстрой последовательности. Эта функция уменьшает внешний вид, громкость звука и интенсивность вибрации для повторяющихся уведомлений на срок до двух минут.
Критические уведомления, требующие звука и тактильных ощущений для привлечения внимания, не подлежат перезарядке. Пользователь может отключить перезарядку уведомлений в настройках.
Рисунок 9. Настройки времени ожидания уведомлений.
Ниже приведен пример того, как найти настройки времени ожидания уведомлений:
Котлин
val intent = Intent(Settings.ACTION_MANAGE_ADAPTIVE_NOTIFICATIONS) val pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_IMMUTABLE)
Ява
Intent intent = new Intent(Settings.ACTION_MANAGE_ADAPTIVE_NOTIFICATIONS) PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_IMMUTABLE)