page.title=Уведомления page.tags="notifications","design","L" @jd:body

Документация для разработчиков

Уведомление пользователя

Уведомления в Android версии 4.4 и ниже

Видеоролик

DevBytes: Уведомления в Android L Developer Preview

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

Новые возможности Android 5.0

В Android 5.0 уведомления были существенно обновлены структурно, визуально, и функционально:

Примечание. Разработка уведомлений в этой версии Android значительно отличается от их разработки в предыдущих версиях. Информацию о разработке уведомлений в предыдущих версиях можно найти в разделе Уведомления в Android версии 4.4 и ниже.

Структура уведомления

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

Базовая компоновка

Все уведомления имеют, как минимум, базовую компоновку, которую составляют следующие элементы.

Уведомления, созданные с помощью {@link android.app.Notification.Builder Notification.Builder} для предыдущих версий платформы, выглядят и функционируют в Android 5.0 так же, как и прежде, за исключением незначительных стилистических отличий, вносимых системой. Дополнительную информацию о внешнем виде и функциональности уведомлений в предыдущих версиях Android можно найти в разделе Уведомления в Android версии 4.4 и ниже.

Уведомление в базовой компоновке на мобильном устройстве (слева) и то же уведомление на носимом устройстве (справа) с фотографией пользователя и значком уведомления

Расширенная компоновка

Разработчик может выбрать степень подробности уведомлений, генерируемых его приложением. Уведомление может содержать первые несколько строк сообщения или миниатюру изображения. В качестве дополнительной информации можно предоставлять пользователю контекст и, —в некоторых случаях, —давать ему возможность прочитать сообщение целиком. Чтобы переключаться между компактной и расширенной компоновкой, пользователь может применить жест сжатия/масштабирования или провести пальцем по экрану. Для уведомлений о единичных событиях Android предоставляет разработчику приложения три шаблона расширенной компоновки (текст, входящая почта и изображения). Ниже приведены скриншоты уведомлений о единичных событиях на мобильных устройствах (слева) и на носимых устройствах (справа).

Действия

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

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

В уведомлениях отдавайте предпочтение действиям

Избегайте действий

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

Уведомления heads-up

Пример уведомления heads-up (входящий телефонный звонок, высокий приоритет), появляющегося поверх приложения с эффектом присутствия

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

Затем уведомление принимает обычный вид. Если для уведомления установлен высокий, максимальный или полноэкранный приоритет , оно становится уведомлением heads-up.

Хорошими примерами событий для уведомлений heads-up являются

Основные рекомендации

Персонализируете уведомление

Уведомление о событии, инициированном другим пользователем (например, сообщение или обновление статуса), должно содержать изображение пользователя, добавленное с помощью {@link android.app.Notification.Builder#setLargeIcon setLargeIcon()}. Кроме того, в метаданные уведомления необходимо включить информацию о пользователе (см. {@link android.app.Notification#EXTRA_PEOPLE}).

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

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

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

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

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

Приоритет

Использование

MAX

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

HIGH

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

DEFAULT

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

LOW

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

MIN

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

Как выбрать подходящий приоритет

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

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

Определите категорию уведомления

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

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

Текущая информация о статусе устройства или контекста

Суммируйте уведомления

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

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

Неправильно

Правильно

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

Расширенное и сжатое сводное уведомление (с использованием InboxStyle)

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

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

Используйте отчетливые значки

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

Правильно

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

Правильно

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

Правильно

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

Неправильно

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

Неправильно

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

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

На многих устройствах Android имеется светодиодный индикатор уведомлений, информирующий пользователя о событиях, когда экран выключен. Уведомления с приоритетом MAX, HIGH или DEFAULT должны вызывать свечение индикатора, а уведомления с низким приоритетом (LOW и MIN) не должны.

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

Создание уведомлений, важных для пользователя

Чтобы пользователям понравилось ваше приложение, необходимо тщательно продумать его уведомления. Уведомления — это голос приложения. Они определяют его индивидуальность. Ненужные или несущественные уведомления раздражают пользователя и заставляют его возмущаться тем, как много внимания требует от него приложение. Поэтому необходимо применять уведомления взвешенно.

Ситуации, в которых следует показывать уведомления

Чтобы создать приложение, от работы с которым пользователи получат удовольствие, необходимо осознать, что внимание пользователя является ресурсом, требующим бережного обращения. Система уведомлений Android была разработана так, чтобы как можно меньше отвлекать пользователя. Однако вы должны отдавать себе отчет в том, что уведомления прерывают деятельность пользователя. Планируя уведомления, спрашивайте себя, достаточно ли они важны, чтобы послужить основанием для такого прерывания. В случае сомнений предоставьте пользователю возможность запросить в настройках приложения получение уведомления или измените приоритет уведомления на LOW или MIN, чтобы не отвлекать пользователя от текущих занятий.

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

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

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

Ситуации, в которых не следует показывать уведомления

В большинстве остальных случаев уведомления неуместны.

Взаимодействие с уведомлениями

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

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

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

Постоянные уведомления при воспроизведении музыки

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

Воспроизведение медиаданных

В Android 5.0 на экране блокировки не отображаются элементы управления воспроизведением от устаревшего класса {@link android.media.RemoteControlClient}. Однако на нем отображаются уведомления, так что теперь каждое уведомление приложения о воспроизведении является для пользователей основным способом управления воспроизведением в заблокированном состоянии. В результате у приложения появляется больше возможностей управлять тем, какие кнопки отображать, и каким образом. При этом с точки зрения пользователя система ведет себя непротиворечиво, независимо от того, заблокирован ли экран.

Диалоговые окна и всплывающие уведомления

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

Упорядочение уведомлений по степени важности

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

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

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

Уведомления от Gmail имеют приоритет DEFAULT, поэтому они обычно оказываются ниже уведомлений от приложений мгновенного обмена сообщениями, таких как Hangouts, но поднимаются в списке на некоторое время, когда поступают новые сообщения.

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

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

Возможности пользователя контролировать информацию, отображаемую на экране блокировки

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

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

Чтобы установить уровень видимости, вызовите Notification.Builder.setVisibility() и укажите одно из следующих значений:

Уведомления на Android Wear

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

Передача уведомлений и действий на другое устройство

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

Передавайте

Не передавайте

Уникальные действия, определяемые для носимых устройств

Некоторые действия можно выполнить только на носимых устройствах, например: