Уведомления предоставляют краткую, своевременную и актуальную информацию о вашем приложении, когда оно не используется.
ОС Android контролирует многие аспекты уведомлений, но вы можете контролировать и другие аспекты. При внедрении уведомлений выполните следующие действия:
- Понимание анатомии уведомления.
- Выберите тип уведомления для вашего варианта использования.
- Установите категорию уведомлений, соответствующую выбранному вами типу уведомлений.
Вынос
- Подумайте о цели уведомления: почему вы предупреждаете своих пользователей?
- Определите шаблон разрешений на уведомления, подумайте, насколько важны уведомления для вашего приложения и где спрашивать на пути пользователя.
- Выберите шаблон уведомления.
- Создайте содержимое уведомления:
- Текст заголовка должен кратко излагать суть уведомления.
- Текст содержимого должен предварительно просмотреть уведомление.
- Содержимое изображения, если оно применимо к содержимому вашего приложения.
- Медиа-клавиатура и метаданные для медиа-шаблона.
- Сделайте очевидным то, что ваш пользователь может сделать с уведомлением, предоставив действия на основе его содержимого с помощью текстовых кнопок, набора текста или элементов управления мультимедиа.
- Включите значок вашего приложения и установите цвет фона значка приложения.
- Установите каналы и категории для ваших уведомлений. Это позволяет системе и вашему пользователю настраивать, какие уведомления они будут получать, и обеспечивает приоритетное поведение.
- Если ваше приложение может доставлять несколько уведомлений одновременно, группируйте уведомления.
- Ознакомьтесь с Android UI Kit на Figma, чтобы найти шаблоны уведомлений.
Анатомия уведомления
Уведомления разработаны таким образом, чтобы упростить сканирование и использование наиболее важных элементов уведомления. Эти элементы:
- Основное содержание : это наиболее заметный элемент уведомления. Вторичная информация, такая как временная метка, имеет меньший размер и консолидируется над основным содержимым.
- Люди : если в уведомлении участвует человек, аватар выделяется среди остального контента.
- Действия : пользователи могут развернуть уведомления, коснувшись значка индикатора. Действия отображаются с текстовыми метками на отдельном цвете фона и в отдельном месте.
Заголовок и содержание уведомления
В свернутом уведомлении отображаются значок приложения, текст заголовка, отметка времени, индикатор раскрытия и текст содержимого. Он также может дополнительно отображать большой значок.
1 Значок приложения. Значок приложения представляет собой двухмерное представление идентификатора вашего приложения. Он отображается в монохромном режиме в строке состояния. Если ваше приложение отправляет самые разные уведомления, рассмотрите возможность замены значка приложения символом, чтобы различать разные типы уведомлений. Подробности см. в разделе Применение цвета значка .
2 Текст заголовка: краткий заголовок уведомления или источника, например имя учетной записи для пользователей. Содержание — наиболее заметный элемент уведомления.
3 Временная метка: указывает, когда было отправлено уведомление, например время пропущенного вызова.
4 Индикатор раскрытия: указывает, находится ли уведомление в свернутом или развернутом состоянии.
5 Текст содержания: вспомогательная информация.
6 Большой значок (необязательно): можно добавить изображение, чтобы усилить смысл уведомления, например сообщение, содержащее аватар отправителя.
Применить цвет значка
Начиная с Android 12 (уровень API 31), система получает цвет значка на основе цвета уведомления, установленного вами в приложении. Если приложение не устанавливает цвет, оно использует цвет системной темы. Раньше цвет был серый.
Для большинства стилей система применяет этот цвет только в том случае, если уведомление предназначено для уведомления службы переднего плана. Однако такого требования нет для уведомлений MediaStyle
и DecoratedMediaCustomViewStyle
, к которым прикреплен мультимедийный сеанс.
В следующем фрагменте показано, как применить цвет значка.
val notification = Notification.Builder()
.setColor(Color.GREEN)
.setColorized(true)
.setSmallIcon(R.drawable.app_icon)
.setStyle(Notification.DecoratedCustomViewStyle())
.build()
Действия по оповещению
1 Действия с текстовыми кнопками
2 заполненные кнопки действий
3 предлагаемых ответа
4 Поле для текста ответа
Начиная с Android 7.0 (уровень API 24), система отображает действия без значков, чтобы вместить больше текста. Чтобы поддерживать устройства Android Wear и устройства под управлением Android 6.0 (уровень API 23) и более ранних версий, в вашем приложении все равно должен быть значок.
Расширенные представления
Вы можете использовать расширенное представление, чтобы отображать пользователю дополнительную информацию, не выходя из уведомления.
В раскрытом виде уведомление может содержать до трех любых из следующих действий:
- Предлагаемые ответы
- Выделенные действия (кнопки в форме таблеток)
- Стандартные текстовые действия
Включить ввод уведомлений
Вы позволяете пользователю вводить текст непосредственно в уведомление, включив действие «Ответить». Он предназначен для ввода небольшого объема текста, например ответа на текстовое сообщение или написания короткой заметки.
Для более длинного набора текста переведите пользователей в свое приложение, чтобы предоставить им больше места для просмотра и редактирования текста.
Для приложений для обмена сообщениями мы рекомендуем сохранять уведомление после того, как пользователь отправил ответ, и ждать, пока разговор не будет поставлен на паузу, прежде чем автоматически закрывать его.
Выберите тип уведомления в зависимости от вашего варианта использования.
Google использует следующие шаблоны уведомлений в своих приложениях для Android. Эти шаблоны можно в некоторой степени настроить для вашего приложения.
Ознакомьтесь с Android UI Kit на Figma, чтобы найти шаблоны уведомлений.
Стандартный шаблон
Стандартный шаблон подходит для большинства уведомлений и позволяет использовать краткий текст, большой значок (если применимо) и действия.
Большой текстовый шаблон
Шаблон большого текста идеально подходит для отображения блоков более длинного текста. Это позволяет пользователю просматривать больше текста после того, как он развернет уведомление.
Шаблон большого изображения
Шаблон «большая картинка» предназначен для уведомлений, содержащих изображение. В свернутом уведомлении отображается большая миниатюра изображения. В развернутом виде уведомление показывает гораздо больший предварительный просмотр.
Шаблон прогресса
Шаблон хода выполнения предназначен для действий, инициированных пользователем, для выполнения которых требуется время. В развернутом виде уведомление, использующее этот шаблон, отображает индикатор выполнения, а также включает действие «отмена», которое позволяет пользователю прекратить это действие. (Неотменяемые действия не требуют уведомлений.)
Медиа-шаблон
Шаблон мультимедиа предназначен для того, чтобы позволить пользователю управлять мультимедиа, воспроизводимым в данный момент из приложения.
- В свернутом уведомлении может отображаться до трех действий. Большой значок может отображать связанное изображение, например обложку альбома.
- В развернутом уведомлении отображается до пяти действий с увеличенным изображением или до шести действий без изображения. Фон и другие элементы уведомления автоматически наследуют цвета изображения.
Шаблон сообщения
Шаблон MessagingStyle предназначен для общения в режиме реального времени. В развернутом виде уведомление, использующее этот шаблон, позволяет пользователю отвечать на сообщения из уведомления.
Шаблон звонка
Используйте шаблон CallStyle для создания широкоформатных уведомлений, включающих в себя большое вложение изображения и указывающих на входящий или исходящий вызов.
Разрешения на уведомления
Какими бы релевантными и своевременными ни были уведомления, большинство уведомлений не являются исключениями , то есть пользователь должен дать согласие на получение уведомлений из вашего приложения.
Есть одно исключение: начиная с Android 13 (уровень API 33), мультимедийные сеансы и приложения, управляющие телефонными звонками, освобождаются от запроса согласия пользователя. Ранее существующие приложения также могут иметь право на участие, если у пользователя уже включены уведомления. Более подробную информацию см. в разделе «Исключения» .
Мы настоятельно рекомендуем, чтобы в вашем приложении были предусмотрены параметры уведомлений в настройках, чтобы пользователи могли обновлять свои настройки уведомлений .
Предложить пользователю подписаться на уведомления, не подлежащие освобождению.
Для уведомлений, не подлежащих освобождению, предложите пользователю указать, хочет ли он согласиться на получение уведомлений. Пользователи, которые явно решили получать уведомления, скорее всего, посчитают их более полезными и менее навязчивыми.
Подождите, пока отобразится диалоговое окно уведомления:
- Опишите преимущества уведомлений и результат отказа в предоставлении разрешений на уведомления.
- Обеспечьте контекстный пользовательский интерфейс, связывающий уведомление с его функциями или тем, на что оно влияет. Этот пользовательский интерфейс может принимать любую форму для лучшей интеграции с вашим приложением: например, карточка с комиссией, нижний лист или экран регистрации. Любое из этих утверждений должно быть отвергнуто.
- Не показывать диалоговое окно разрешения на уведомление, если пользователь закрыл пользовательский интерфейс.
Начиная с Android 13, пользователям могут повторно запрашиваться разрешения на уведомления.
Обязательные уведомления
Службы переднего плана выполняют операции, которые заметны пользователю, но не взаимодействуют напрямую с вашим приложением. Эти службы отображают уведомление в строке состояния, чтобы пользователи знали, что ваше приложение выполняет задачу на переднем плане и потребляет системные ресурсы.
Поскольку эти процессы расходуют заряд батареи и, возможно, данные, ваше приложение должно информировать пользователей о них, показывая уведомление, которое невозможно закрыть. Пользователь не может отклонить уведомление, поэтому вы должны предоставить пользователю действие, позволяющее остановить службу.
В следующем примере показано уведомление от фитнес-приложения. Пользователь начал активный сеанс тренировки, который создает экземпляр службы переднего плана, отслеживающей сеанс тренировки. Приложение отображает уведомление, указывающее, что оно отслеживает ходьбу, с возможностью просмотра тренировки.
Когда не следует использовать уведомление
Не используйте уведомления в следующих случаях:
- Для перекрестного продвижения или рекламы другого продукта (это строго запрещено Play Store)
- Если пользователь никогда не открывал ваше приложение
- Как основной метод общения с пользователями
- Чтобы побудить пользователя вернуться в приложение, но не предоставлять прямой ценности (например, «Давненько не виделись!»).
- Для запросов на оценку вашего приложения
- Для операций, не требующих участия пользователя, например синхронизации информации.
- Чтобы объявить об ошибках, из которых приложение может восстановиться без взаимодействия с пользователем.
- Для сообщений о праздниках или днях рождения
Поведение
Помните о следующем поведении уведомлений и о том, как с ними обращаться в определенных контекстах.
Прибытие уведомления
Когда приходит уведомление, Android добавляет его в ящик уведомлений. В зависимости от заданных вами параметров и текущего состояния устройства уведомление может выполнять любое из следующих действий:
- Издать звук или вызвать вибрацию телефона.
- Отображение в статус-баре значком; Обычно это значок вашего приложения, но если у вас есть несколько типов уведомлений, используйте символ, отражающий цель уведомления.
- Отображать в виде всплывающего уведомления, просматривая текущий экран, чтобы привлечь внимание пользователя.
Как всегда, пользователь может изменить установленное вами поведение уведомлений.
1 Индикатор уведомлений в строке состояния, указывающий на наличие уведомления в панели уведомлений.
2 Уведомление «выглядывает» на текущий экран, чтобы привлечь внимание пользователя в середине задачи.
Панель уведомлений
Панель уведомлений в Android обычно отображает уведомления в обратном хронологическом порядке, причем на корректировки влияют следующие условия:
- Заявленный приоритет или важность уведомлений приложения.
- Уведомляло ли недавно уведомление пользователя звуком или вибрацией.
- Любые люди, прикрепленные к уведомлению, и являются ли они избранными контактами.
- Представляет ли уведомление важное текущее действие, например текущий телефонный звонок или воспроизведение музыки.
- Изменения внешнего вида некоторых уведомлений ОС Android вверху и внизу списка путем добавления выделения или уменьшения выделения, что помогает пользователю сканировать контент.
Обработка устаревших уведомлений
Панель уведомлений предназначена для отображения пользователям информации, актуальной на текущий момент времени. Если более раннее уведомление устарело , то есть больше не актуально, отклоните его, чтобы пользователь его не увидел.
Новые уведомления обозначаются значком приложения.
В поддерживаемых средствах запуска на устройствах под управлением Android 8.0 (уровень API 26) и выше на значках приложений отображается точка уведомления , указывающая, что с приложением связано новое уведомление. Эти точки появляются по умолчанию в приложениях запуска, которые их поддерживают, и вашему приложению не нужно ничего делать. Использование значков также можно отключить и ограничить.
Действия, которые пользователи могут выполнять с помощью уведомлений
Уведомления могут позволить пользователям выполнять любое из следующих действий:
Навигация к месту назначения: для навигации пользователь может нажать на уведомление. Если уведомление отображается на заблокированном экране, пользователю необходимо дважды коснуться его, а затем ввести свой PIN-код, графический ключ или пароль.
Когда пользователь нажимает на уведомление, ваше приложение должно отображать пользовательский интерфейс, который напрямую связан с этим уведомлением и позволяет пользователю предпринять немедленные действия. Например, если в уведомлении говорится, что настала их очередь в игре для двух игроков, нажатие на уведомление должно привести их непосредственно к этой игре.
Посмотрите расширенное представление уведомления: в заголовке появится индикатор раскрытия. Пользователь может коснуться индикатора или провести вниз по телу уведомления, чтобы развернуть его.
Отклонить уведомление (если разрешено): пользователь может закрыть его, проведя пальцем влево или вправо.
Текущие уведомления, указывающие на продолжающийся процесс в фоновом режиме, например воспроизведение музыки, нельзя закрыть смахиванием.
Отложить хедз-ап-уведомление: пользователь может провести вверх по хедз-ап-уведомлению , и дальнейшие уведомления об этом событии не будут появляться в течение одной минуты.
Управляйте аналогичными уведомлениями в будущем: пользователи могут получить доступ к элементам управления уведомлениями следующими способами:
- Касание и удерживание отдельного уведомления
- Проведите пальцем по уведомлению влево или вправо, а затем коснитесь значка настроек.
Отображаемые элементы управления различаются в зависимости от версии Android и наличия в приложении каналов для уведомлений (начиная с Android 8.0).
Группировать несколько уведомлений
Для приложений, которые генерируют несколько уведомлений одного типа, Android предлагает группировку уведомлений, чтобы избежать перегрузки пользователей.
Ваше приложение может отображать несколько уведомлений в соответствии со следующей иерархией.
- Родительское уведомление отображает сводку своих дочерних уведомлений.
- Если пользователь разворачивает родительское уведомление, Android отображает все дочерние уведомления.
- Пользователь может развернуть дочернее уведомление, чтобы отобразить все его содержимое.
Android представляет дочерние уведомления без повторяющейся информации заголовка. Например, если дочернее уведомление имеет тот же значок приложения, что и родительское, заголовок дочернего приложения не содержит значка.
Уведомления о детях должны быть понятными, если они появляются в одиночку, поскольку система может показывать их за пределами группы, когда они приходят.
Настройки
Каналы
Начиная с 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 и «Фото» отображают весь контент после того, как пользователь решил отобразить эту информацию на экране блокировки.
1 Все содержимое уведомлений отображается на экране блокировки
2. Конфиденциальное содержимое уведомлений скрыто на экране блокировки.
Стиль
Понятный и краткий текст
Android урезает заголовки контента до одной строки (даже в развернутом виде).
Хороший заголовок контента соответствует следующим правилам:
- Не превышает 30 символов
- Содержит самую важную информацию
- Избегает переменных (если они не содержат число или короткую текстовую строку или им не предшествует текст).
- Исключает название приложения, которое уже отображается в заголовке.
Хороший текст контента соответствует следующим правилам:
- Позволяет избежать превышения ограничения в 40 символов.
- Избегает повторения того, что находится в заголовке контента.
Большой значок
Используйте большой значок в случаях, когда изображения значимо усиливают содержание уведомления. Некоторые примеры:
- Сообщения от другого человека, например изображение человека, отправляющего сообщение.
- Источник контента, если он отличается от приложения, отправляющего уведомление, например логотип канала YouTube, на который подписан пользователь.
- Значимые символы уведомления, например стрелка, указывающая направление движения.
Большие значки должны быть круглыми при изображении человека и квадратными во всех остальных случаях.
Обновления версий Android
Пользовательский интерфейс системы уведомлений Android и API-интерфейсы, связанные с уведомлениями, постоянно развиваются. Список этих изменений можно найти в разделе «Совместимость уведомлений» .
Особенности платформы
Носить
Если у пользователя есть сопряженное устройство с Wear OS, все ваши уведомления отображаются там автоматически, включая расширяемые детали и кнопки действий. Подробную информацию см. на странице оформления уведомлений на Wear .