Уведомления

Уведомления предоставляют краткую, своевременную и актуальную информацию о вашем приложении, когда оно не используется.

ОС Android контролирует многие аспекты уведомлений, но вы можете контролировать и другие аспекты. При внедрении уведомлений выполните следующие действия:

  1. Понимание анатомии уведомления.
  2. Выберите тип уведомления для вашего варианта использования.
  3. Установите категорию уведомлений, соответствующую выбранному вами типу уведомлений.

Вынос

  • Подумайте о цели уведомления: почему вы предупреждаете своих пользователей?
  • Определите шаблон разрешений на уведомления, подумайте, насколько важны уведомления для вашего приложения и где спрашивать на пути пользователя.
  • Выберите шаблон уведомления.
  • Создайте содержимое уведомления:
    • Текст заголовка должен кратко излагать суть уведомления.
    • Текст содержимого должен предварительно просмотреть уведомление.
    • Содержимое изображения, если оно применимо к содержимому вашего приложения.
    • Медиа-клавиатура и метаданные для медиа-шаблона.
  • Сделайте очевидным то, что ваш пользователь может сделать с уведомлением, предоставив действия на основе его содержимого с помощью текстовых кнопок, набора текста или элементов управления мультимедиа.
  • Включите значок вашего приложения и установите цвет фона значка приложения.
  • Установите каналы и категории для ваших уведомлений. Это позволяет системе и вашему пользователю настраивать, какие уведомления они будут получать, и обеспечивает приоритетное поведение.
  • Если ваше приложение может доставлять несколько уведомлений одновременно, группируйте уведомления.
  • Ознакомьтесь с Android UI Kit на Figma, чтобы найти шаблоны уведомлений.

Анатомия уведомления

Уведомления разработаны таким образом, чтобы упростить сканирование и использование наиболее важных элементов уведомления. Эти элементы:

  • Основное содержание : это наиболее заметный элемент уведомления. Вторичная информация, такая как временная метка, имеет меньший размер и консолидируется над основным содержимым.
  • Люди : если в уведомлении участвует человек, аватар выделяется среди остального контента.
  • Действия : пользователи могут развернуть уведомления, коснувшись значка индикатора. Действия отображаются с текстовыми метками на отдельном цвете фона и в отдельном месте.
Рисунок 1. Свернутое уведомление.

Заголовок и содержание уведомления

В свернутом уведомлении отображаются значок приложения, текст заголовка, отметка времени, индикатор раскрытия и текст содержимого. Он также может дополнительно отображать большой значок.

Рисунок 2. Область заголовка уведомления.

1 Значок приложения. Значок приложения представляет собой двухмерное представление идентификатора вашего приложения. Он отображается в монохромном режиме в строке состояния. Если ваше приложение отправляет самые разные уведомления, рассмотрите возможность замены значка приложения символом, чтобы различать разные типы уведомлений. Подробности см. в разделе Применение цвета значка .

2 Текст заголовка: краткий заголовок уведомления или источника, например имя учетной записи для пользователей. Содержание — наиболее заметный элемент уведомления.

3 Временная метка: указывает, когда было отправлено уведомление, например время пропущенного вызова.

4 Индикатор раскрытия: указывает, находится ли уведомление в свернутом или развернутом состоянии.

5 Текст содержания: вспомогательная информация.

6 Большой значок (необязательно): можно добавить изображение, чтобы усилить смысл уведомления, например сообщение, содержащее аватар отправителя.

Применить цвет значка

Начиная с Android 12 (уровень API 31), система получает цвет значка на основе цвета уведомления, установленного вами в приложении. Если приложение не устанавливает цвет, оно использует цвет системной темы. Раньше цвет был серый.

Рисунок 3. Цвет значка приложения в результате.

Для большинства стилей система применяет этот цвет только в том случае, если уведомление предназначено для уведомления службы переднего плана. Однако такого требования нет для уведомлений MediaStyle и DecoratedMediaCustomViewStyle , к которым прикреплен мультимедийный сеанс.

В следующем фрагменте показано, как применить цвет значка.

val notification = Notification.Builder()
    .setColor(Color.GREEN)
    .setColorized(true)
    .setSmallIcon(R.drawable.app_icon)
    .setStyle(Notification.DecoratedCustomViewStyle())
    .build()

Действия по оповещению

Рисунок 4. Область действия уведомления.

1 Действия с текстовыми кнопками

2 заполненные кнопки действий

3 предлагаемых ответа

4 Поле для текста ответа

Начиная с Android 7.0 (уровень API 24), система отображает действия без значков, чтобы вместить больше текста. Чтобы поддерживать устройства Android Wear и устройства под управлением Android 6.0 (уровень API 23) и более ранних версий, в вашем приложении все равно должен быть значок.

Расширенные представления

Вы можете использовать расширенное представление, чтобы отображать дополнительную информацию пользователю, не выходя из уведомления.

В раскрытом виде уведомление может содержать до трех любых из следующих действий:

  • Предлагаемые ответы
  • Выделенные действия (кнопки в форме таблеток)
  • Стандартные текстовые действия
Включите текстовые действия, которые дублируют поведение нажатия на тело уведомления.
Дайте пользователю возможность взаимодействовать с уведомлением. Приложение Google Clock показывает работающий таймер, но позволяет пользователю приостановить или добавить минуту прямо из уведомления.

Включить ввод уведомлений

Вы позволяете пользователю вводить текст непосредственно в уведомление, включив действие «Ответить». Он предназначен для ввода небольшого объема текста, например ответа на текстовое сообщение или написания короткой заметки.

Для более длинного набора текста переведите пользователей в свое приложение, чтобы предоставить им больше места для просмотра и редактирования текста.

Для приложений для обмена сообщениями мы рекомендуем сохранять уведомление после того, как пользователь отправил ответ, и ждать, пока разговор не будет поставлен на паузу, прежде чем автоматически закрывать его.

Рис. 5. Пользователь отвечает непосредственно в сообщениях Android, не выходя из уведомления после нажатия «Ответить».

Выберите тип уведомления в зависимости от вашего варианта использования.

Google использует следующие шаблоны уведомлений в своих приложениях для Android. Эти шаблоны можно в некоторой степени настроить для вашего приложения.

Ознакомьтесь с Android UI Kit на Figma, чтобы найти шаблоны уведомлений.

Стандартный шаблон

Стандартный шаблон подходит для большинства уведомлений и позволяет использовать краткий текст, большой значок (если применимо) и действия.

Рисунок 6. Стандартный шаблон уведомления.

Большой текстовый шаблон

Шаблон большого текста идеально подходит для отображения блоков более длинного текста. Это позволяет пользователю просматривать больше текста после того, как он развернет уведомление.

Рисунок 7. Большой текстовый шаблон с большим значком опции.

Шаблон большого изображения

Шаблон «большая картинка» предназначен для уведомлений, содержащих изображение. В свернутом уведомлении отображается большая миниатюра изображения. В развернутом виде уведомление показывает гораздо больший предварительный просмотр.

Рисунок 8. Шаблон большого изображения.

Шаблон прогресса

Шаблон хода выполнения предназначен для действий, инициированных пользователем, для выполнения которых требуется время. В развернутом виде уведомление, использующее этот шаблон, отображает индикатор выполнения, а также включает действие «отмена», которое позволяет пользователю прекратить это действие. (Неотменяемые действия не требуют уведомлений.)

Рисунок 9: Шаблон хода выполнения

Медиа-шаблон

Шаблон мультимедиа предназначен для того, чтобы позволить пользователю управлять мультимедиа, воспроизводимым в данный момент из приложения.

  • В свернутом уведомлении может отображаться до трех действий. Большой значок может отображать связанное изображение, например обложку альбома.
  • В развернутом виде уведомление отображает до пяти действий с увеличенным изображением или до шести действий без изображения. Фон и другие элементы уведомления автоматически наследуют цвета изображения.
Рисунок 10: Медиа-шаблон

Шаблон сообщения

Шаблон MessagingStyle предназначен для общения в режиме реального времени. В развернутом виде уведомление, использующее этот шаблон, позволяет пользователю отвечать на сообщения из уведомления.

Рисунок 11: Шаблон сообщения.

Шаблон звонка

Используйте шаблон CallStyle для создания широкоформатных уведомлений, включающих в себя большое вложение изображения и указывающих на входящий или исходящий вызов.

Рисунок 12: Шаблон звонка

Разрешения на уведомления

Какими бы релевантными и своевременными ни были уведомления, большинство уведомлений не являются исключениями , то есть пользователь должен дать согласие на получение уведомлений из вашего приложения.

Есть одно исключение: начиная с Android 13 (уровень API 33), мультимедийные сеансы и приложения, управляющие телефонными звонками, освобождаются от запроса согласия пользователя. Ранее существующие приложения также могут иметь право на участие, если у пользователя уже включены уведомления. Более подробную информацию см. в разделе «Исключения» .

Мы настоятельно рекомендуем, чтобы в вашем приложении были предусмотрены параметры уведомлений в настройках, чтобы пользователи могли обновлять свои настройки уведомлений .

Предложить пользователю подписаться на уведомления, не подлежащие освобождению.

Для уведомлений, не подлежащих освобождению, предложите пользователю указать, хочет ли он согласиться на получение уведомлений. Пользователи, которые явно решили получать уведомления, скорее всего, посчитают их более полезными и менее навязчивыми.

Рисунок 13. Запрос согласия пользователя на уведомление, не являющееся исключением.

Подождите, пока отобразится диалоговое окно уведомления:

  • Опишите преимущества уведомлений и результат отказа в предоставлении разрешений на уведомления.
  • Обеспечьте контекстный пользовательский интерфейс, связывающий уведомление с его функциями или тем, на что оно влияет. Этот пользовательский интерфейс может принимать любую форму для лучшей интеграции в ваше приложение: например, карточка с комиссией, нижний лист или экран регистрации. Любое из этих утверждений должно быть отвергнуто.
  • Не показывать диалоговое окно разрешения на уведомление, если пользователь закрыл пользовательский интерфейс.

Начиная с Android 13, пользователям могут повторно запрашиваться разрешения на уведомления.

Обязательные уведомления

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

Рис. 14. Пример уведомления службы приоритетного плана фитнес-приложения.

Поскольку эти процессы расходуют заряд батареи и, возможно, данные, ваше приложение должно информировать пользователей о них, показывая уведомление, которое невозможно закрыть. Пользователь не может отклонить уведомление, поэтому вы должны предоставить пользователю действие, позволяющее остановить службу.

В следующем примере показано уведомление от фитнес-приложения. Пользователь начал активный сеанс тренировки, который создает экземпляр службы переднего плана, отслеживающей сеанс тренировки. Приложение отображает уведомление, указывающее, что оно отслеживает ходьбу, с возможностью просмотра тренировки.

Когда не следует использовать уведомление

Не используйте уведомления в следующих случаях:

  • Для перекрестного продвижения или рекламы другого продукта (это строго запрещено Play Store)
  • Если пользователь никогда не открывал ваше приложение
  • Как основной метод общения с пользователями
  • Чтобы побудить пользователя вернуться в приложение, но не предоставлять прямой ценности (например, «Давненько не виделись!»).
  • Для запросов на оценку вашего приложения
  • Для операций, не требующих участия пользователя, например синхронизации информации.
  • Чтобы объявить об ошибках, из которых приложение может восстановиться без взаимодействия с пользователем.
  • Для сообщений о праздниках или днях рождения
Отправляйте поздравления с праздниками или днями рождения в виде уведомлений.
Прерывайте пользователя в середине задачи с единственной целью спросить, хорошо ли вы справляетесь со своей работой.

Поведение

Помните о следующем поведении уведомлений и о том, как с ними обращаться в определенных контекстах.

Прибытие уведомления

Когда приходит уведомление, Android добавляет его в ящик уведомлений. В зависимости от заданных вами параметров и текущего состояния устройства уведомление может выполнять любое из следующих действий:

  • Издать звук или вызвать вибрацию телефона.
  • Отображение в статус-баре значком; Обычно это значок вашего приложения, но если у вас есть несколько типов уведомлений, используйте символ, отражающий цель уведомления.
  • Отображать в виде всплывающего уведомления, просматривая текущий экран, чтобы привлечь внимание пользователя.

Как всегда, пользователь может изменить установленное вами поведение уведомлений.

Рисунок 15: Прибытие уведомления

1 Индикатор уведомлений в строке состояния, указывающий на наличие уведомления в панели уведомлений.

2 Уведомление «выглядывает» на текущий экран, чтобы привлечь внимание пользователя в середине задачи.

Панель уведомлений

Панель уведомлений в Android обычно отображает уведомления в обратном хронологическом порядке, причем на корректировки влияют следующие условия:

  • Заявленный приоритет или важность уведомлений приложения.
  • Уведомляло ли недавно уведомление пользователя звуком или вибрацией.
  • Любые люди, прикрепленные к уведомлению, и являются ли они избранными контактами.
  • Представляет ли уведомление важное текущее действие, например текущий телефонный звонок или воспроизведение музыки.
  • Изменения внешнего вида некоторых уведомлений ОС Android вверху и внизу списка путем добавления выделения или уменьшения выделения, что помогает пользователю сканировать контент.

Обработка устаревших уведомлений

Панель уведомлений предназначена для отображения пользователям информации, актуальной на текущий момент времени. Если более раннее уведомление устарело , то есть больше не актуально, отклоните его, чтобы пользователь его не увидел.

Рис. 16. Текст «Только что прибыл» отображается в верхней части панели уведомлений, а уведомление с более низким приоритетом о добавлении фотографии — внизу.

Новые уведомления обозначаются значком приложения.

В поддерживаемых средствах запуска на устройствах под управлением Android 8.0 (уровень API 26) и выше на значках приложений отображается точка уведомления , указывающая, что с приложением связано новое уведомление. Эти точки появляются по умолчанию в приложениях запуска, которые их поддерживают, и вашему приложению не нужно ничего делать. Использование значков также можно отключить и ограничить.

Рис. 17. Точка уведомления на значке приложения, указывающая, что с приложением связано новое уведомление.

Действия, которые пользователи могут выполнять с помощью уведомлений

Уведомления могут позволить пользователям выполнять любое из следующих действий:

  • Навигация к месту назначения: для навигации пользователь может нажать на уведомление. Если уведомление отображается на заблокированном экране, пользователю необходимо дважды коснуться его, а затем ввести свой PIN-код, графический ключ или пароль.

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

  • Посмотрите расширенное представление уведомления: в заголовке появится индикатор раскрытия. Пользователь может коснуться индикатора или провести вниз по телу уведомления, чтобы развернуть его.

    Рисунок 18: Расширенное уведомление
  • Отклонить уведомление (если разрешено): пользователь может закрыть его, проведя пальцем влево или вправо.

Текущие уведомления, указывающие на продолжающийся процесс в фоновом режиме, например воспроизведение музыки, нельзя закрыть смахиванием.

  • Отложить хедз-ап-уведомление: пользователь может провести вверх по хедз-ап-уведомлению , и дальнейшие уведомления об этом событии не будут появляться в течение одной минуты.

  • Управляйте аналогичными уведомлениями в будущем: пользователи могут получить доступ к элементам управления уведомлениями следующим образом:

    • Касание и удерживание отдельного уведомления
    • Проведите пальцем по уведомлению влево или вправо, а затем коснитесь значка настроек.

Отображаемые элементы управления различаются в зависимости от версии Android и наличия в приложении каналов для уведомлений (начиная с Android 8.0).

Группировать несколько уведомлений

Для приложений, которые генерируют несколько уведомлений одного типа, Android предлагает группировку уведомлений, чтобы избежать перегрузки пользователей.

Ваше приложение может отображать несколько уведомлений в соответствии со следующей иерархией.

  • Родительское уведомление отображает сводку своих дочерних уведомлений.
  • Если пользователь разворачивает родительское уведомление, Android отображает все дочерние уведомления.
  • Пользователь может развернуть дочернее уведомление, чтобы отобразить все его содержимое.

Android представляет дочерние уведомления без повторяющейся информации заголовка. Например, если дочернее уведомление имеет тот же значок приложения, что и родительское, заголовок дочернего приложения не содержит значка.

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

Рис. 19. Сгруппированные уведомления в свернутом и развернутом виде.

Настройки

Каналы

Начиная с Android 8.0 (уровень API 26), все уведомления необходимо назначать каналу. Для каждого канала вы можете настроить визуальное и звуковое поведение, которое будет применяться ко всем уведомлениям в этом канале. Пользователи могут изменить эти настройки и решить, какие каналы уведомлений из вашего приложения могут быть навязчивыми или видимыми.

Подробные сведения о том, как это реализовать, см. в разделе Создание каналов уведомлений и управление ими .

Важность следует выбирать с учетом времени и внимания пользователя. Когда неважное уведомление замаскировано под срочное, оно может вызвать ненужную тревогу.

Важность Поведение Использование Примеры
HIGH Издает звук и появляется на экране Критическая по времени информация, которую пользователь должен знать или действовать немедленно. Текстовые сообщения, сигналы тревоги, телефонные звонки
DEFAULT Издает звук Информация, которая должна быть видна пользователю при первой же возможности, но не должна прерывать его работу. Оповещения о пробках, напоминания о задачах
LOW Нет звука Каналы уведомлений, не соответствующие требованиям других уровней важности Новый контент, на который подписался пользователь, приглашения в соцсети.
MIN Нет звуковых или визуальных прерываний Несущественная информация, которая может подождать или не имеет особого отношения к пользователю. Близлежащие достопримечательности, погода, рекламный контент

Предопределенные категории

Независимо от того, используете ли вы каналы или нет, назначьте каждое отдельное уведомление наиболее подходящей предопределенной категории. Android может использовать эту информацию для принятия решений по ранжированию и фильтрации.

Категория Описание
CATEGORY_CALL Входящий вызов (голосовой или видео) или аналогичный запрос на синхронную связь.
CATEGORY_MESSAGE Входящее прямое сообщение (SMS, мгновенное сообщение и т. д.)
CATEGORY_EMAIL Асинхронное массовое сообщение (электронная почта)
CATEGORY_EVENT Событие календаря
CATEGORY_PROMO Продвижение или реклама
CATEGORY_ALARM Будильник или таймер
CATEGORY_PROGRESS Ход длительной фоновой операции
CATEGORY_SOCIAL Социальная сеть или обмен обновлениями
CATEGORY_ERROR Ошибка в фоновой операции или статусе аутентификации.
CATEGORY_TRANSPORT Управление транспортировкой мультимедиа для воспроизведения
CATEGORY_SYSTEM Обновление статуса системы или устройства. Зарезервировано для использования системой.
CATEGORY_SERVICE Индикация запуска фоновой службы
CATEGORY_RECOMMENDATION Конкретная, своевременная рекомендация по одной вещи. Например, новостное приложение может рекомендовать новость, которую пользователь, возможно, захочет прочитать следующей.
CATEGORY_STATUS Текущая информация об устройстве или контекстном статусе

Уведомления на экране блокировки

Если пользователь решил показывать уведомления, когда его экран заблокирован, эти уведомления могут скрывать любой контент, который ваше приложение помечает как конфиденциальный. Android оценивает уровень видимости каждого уведомления, чтобы определить, что можно безопасно показать.

Установите уровень чувствительности для содержимого на экранах блокировки

Конфиденциальность пользователя имеет решающее значение, поэтому имейте в виду, что на экране блокировки могут отображаться разные уровни уведомлений. Для каждого создаваемого вами уведомления необходимо установить уровень видимости: общедоступный, частный или секретный .

  • Публичные уведомления полностью видны на защищенных экранах блокировки.
  • Секретные уведомления скрыты.
  • Частные уведомления находятся посередине: они показывают только основную информацию, включая название приложения, которое его опубликовало, и его значок. Вместо обычного контента, который скрыт, вы можете при желании отображать текст, не раскрывающий личную информацию, например 2 new messages .

В следующем примере уведомления на экране блокировки для приложений Gmail и «Фото» отображают весь контент после того, как пользователь решил отобразить эту информацию на экране блокировки.

Рис. 20. Экран блокировки с различными уровнями чувствительности.

1 Все содержимое уведомлений отображается на экране блокировки

2. Конфиденциальное содержимое уведомлений скрыто на экране блокировки.

Стиль

Понятный и краткий текст

Android урезает заголовки контента до одной строки (даже в развернутом виде).

Хороший заголовок контента соответствует следующим правилам:

  • Не превышает 30 символов
  • Содержит самую важную информацию
  • Избегает переменных (если они не содержат число или короткую текстовую строку или им не предшествует текст).
  • Исключает название приложения, которое уже отображается в заголовке.
Покажите название приложения в заголовке контента, который дублирует область заголовка и использует доступные символы.
Покажите самую важную информацию в заголовке контента.

Хороший текст контента соответствует следующим правилам:

  • Позволяет избежать превышения ограничения в 40 символов.
  • Избегает повторения того, что находится в заголовке контента.

Большой значок

Используйте большой значок в случаях, когда изображения значимо усиливают содержание уведомления. Некоторые примеры:

  • Сообщения от другого человека, например изображение человека, отправляющего сообщение.
  • Источник контента, если он отличается от приложения, отправляющего уведомление, например логотип канала YouTube, на который подписан пользователь.
  • Значимые символы уведомления, например стрелка, указывающая направление движения.

Большие значки должны быть круглыми при изображении человека и квадратными во всех остальных случаях.

Используйте большой значок для брендинга.
Используйте большой значок, чтобы значимо подчеркнуть содержание уведомления, например, прикрепив к уведомлению о сообщении фотографию отображаемого человека.

Обновления версий Android

Пользовательский интерфейс системы уведомлений Android и API-интерфейсы, связанные с уведомлениями, постоянно развиваются. Список этих изменений можно найти в разделе «Совместимость уведомлений» .

Особенности платформы

Носить

Если у пользователя есть сопряженное устройство с Wear OS, все ваши уведомления отображаются там автоматически, включая расширяемые детали и кнопки действий. Подробную информацию см. на странице оформления уведомлений на Wear .