Об уведомлениях

Уведомление — это сообщение, которое 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 следующим образом:

  1. Маленький значок: обязателен; устанавливается с помощью setSmallIcon() .
  2. Имя приложения: предоставлено системой.
  3. Метка времени: предоставляется системой, но вы можете переопределить ее с помощью setWhen() или скрыть с помощью setShowWhen(false) .
  4. Большая иконка: необязательная; обычно используется только для фотографий контактов. Не используйте ее для иконки приложения. Установите с помощью setLargeIcon() .
  5. Заголовок: необязательно; устанавливается с помощью setContentTitle() .
  6. Текст: необязательно; устанавливается с помощью 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 16.0, API уровень 36

Уведомления теперь автоматически группируются от имени приложения.

Следующие уведомления автоматически группируются: - Уведомления без сводки - Уведомления без дочерних уведомлений - Уведомления с одним или небольшим количеством дочерних уведомлений

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)