Обзор уведомлений

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

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

О дизайне и схемах взаимодействия подробно рассказано в нашем руководстве. На этой странице собраны примеры уведомлений для платформы Android и представлены оптимальные методы использования API Notification.Style в приложениях для мобильных и носимых устройств.

Отображение на устройстве

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

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

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

Рис. 1. Значки уведомлений появляются в левой части строки состояния.

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

Рис. 2. Панель уведомлений.

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

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

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

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

Рис. 3. Уведомление heads-up появляется во время использования другого приложения.

Уведомления 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. Пометки и меню уведомлений.

Подробнее о пометках на значках приложений

Устройства Wear OS

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

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

Рис. 6. Уведомления автоматически появляются на подключенных устройствах Wear OS.

Дизайн уведомлений

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

Рис. 7. Уведомление с типичными сведениями.

На рисунке 7 показано, из каких частей обычно состоит уведомление.

  1. Небольшой значок, заданный с помощью элемента setSmallIcon() (обязательно).
  2. Название приложения. Это системная информация.
  3. Отметка времени. Это системная информация, но ее можно изменить с помощью элемента setWhen() или скрыть, добавив параметр setShowWhen(false).
  4. Большой значок, заданный с помощью элемента setLargeIcon() (необязательно). Как правило, используется для фото контакта. Не размещайте здесь значок приложения.
  5. Заголовок, заданный с помощью элемента setContentTitle() (необязательно).
  6. Текст, настраиваемый с помощью элемента setContentText() (необязательно).

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

Действия с уведомлениями

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

Рис. 9. Уведомление с командными кнопками.

Начиная с версии Android 7.0 (API уровня 24) в уведомление можно добавить поле для ввода текста, которое позволяет отвечать на сообщения, не переходя в приложение.

Подробнее о том, как добавить в уведомление командные кнопки

Уведомления с раскрывающимися компонентами

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

Рис. 8. Уведомление с раскрывающейся областью просмотра.

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

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

Обновления и группы уведомлений

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

Если ни один из этих способов вам не подходит, группируйте отдельные уведомления. Эта возможность доступна на устройствах Android 7.0 и более поздних версий. В панели уведомлений появится сводная информация о нескольких событиях. Каждое из них можно посмотреть по отдельности.

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

Рис. 10. Группа уведомлений в свернутом и развернутом виде.

Подробнее о том, как группировать уведомления

Каналы уведомлений

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

На устройствах Android 7.1 (API уровня 25) и более ранних версий разделение по каналам не предусмотрено, поэтому пользователи могут управлять только всеми уведомлениями приложения сразу.

Рис. 11. Настройки уведомлений приложения "Часы".

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

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

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

Важность уведомлений

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

В Android 8.0 (API уровня 26) и более поздних версий важность уведомления зависит от параметра importance канала, в котором оно появляется. Пользователи могут изменять важность канала в настройках системы (см. рисунок 12). В Android 7.1 (API уровня 25) и более ранних версий важность уведомления определяется параметром priority.

Рис. 12. На устройствах Android 8.0 и более поздних версий пользователи могут сами определять важность канала уведомлений.

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

  • крайняя важность (уведомление heads-up со звуковым оповещением);
  • высокая (уведомление со звуком);
  • средняя (уведомление без звука);
  • низкая (уведомление без звука и без значка в строке состояния).

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

Подробнее о том, как настроить важность уведомлений

Режим "Не беспокоить"

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

Есть три уровня режима "Не беспокоить":

  • Полная тишина. В этом режиме отключается вибросигнал и все звуки, в том числе для будильника, музыкального проигрывателя, игр и видео.
  • Только будильник. Блокируется вибросигнал и все звуки, кроме будильника.
  • Только важные. Пользователи сами решают, какие категории включить, например будильники, напоминания, уведомления о мероприятиях, звонки, сообщения и т. д. Кроме того, можно выбрать пользователей, сообщения и звонки от которых не будут блокироваться (см. рисунок 13).

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

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

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

Уведомления для служб переднего плана

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

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

Ограничения

Начиная с версии Android 8.1 (API уровня 27) действуют ограничения на количество звуковых оповещений в секунду из одного приложения. Если за одну секунду будет опубликовано несколько уведомлений, все они появятся в интерфейсе, но звуком будет сопровождаться только первое.

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

Совместимость

Мы совершенствуем интерфейс уведомлений и соответствующие API с момента выхода Android 1.0. Чтобы последние функции API уведомлений работали на старых устройствах, используйте вспомогательные библиотеки NotificationCompat и NotificationManagerCompat, а также их подклассы. Вам не придется писать условный код для проверки уровней API, так как проверка будет выполнена автоматически.

В компонент NotificationCompat добавлены актуальные методы. Обратите внимание, что доступность метода для компонента NotificationCompat не гарантирует того, что соответствующая функция будет должным образом работать на устаревших устройствах. В отдельных случаях вызов нового API может привести к отказу. Например, если вызвать метод NotificationCompat.addAction(), то командная кнопка отобразится только на устройствах с Android 4.1 (API уровня 16) и более поздних версий.

Ниже рассказано, как менялся функционал уведомлений на ОС Android.

Android 4.4 (API уровня 16)

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

Android 4.4 (API уровней 19 и 20)

  • В API добавлены службы мониторинга уведомлений.
  • В API уровня 20 появилась поддержка Android Wear (теперь Wear OS).

Android 5.0 (API уровня 21)

  • Добавлены уведомления heads-up и уведомления на заблокированном экране.
  • Появилась возможность переводить устройство в режим "Не беспокоить" и настраивать приоритет уведомлений на уровне "Только важные".
  • В API добавлены методы, которые позволяют настроить показ уведомлений на заблокированном экране (setVisibility()), а также определить, какие сведения будут выводиться на экран.
  • Добавлен метод setPriority(), с помощью которого можно определить уровень важности уведомления. Уведомления с высокой важностью появляются в виде уведомлений heads-up, которые привлекают внимание пользователей.
  • На устройствах с Android Wear (теперь Wear OS) появилась возможность создавать стеки уведомлений с помощью метода setGroup(). Функция была недоступна для телефонов и планшетов. В последующих версиях она стала называться "группировка уведомлений".

Android 7.0 (API уровня 24)

  • Изменены стили уведомлений. Стали более заметны аватары и фото отправителей.
  • Добавлен специальный шаблон для мессенджеров и еще два шаблона с новым оформлением и раскрывающимися компонентами.
  • Функция группировки уведомлений появилась на телефонах и планшетах. Используется тот же API, что и для создания стеков уведомлений на Android Wear (теперь Wear OS) в Android 5.0 (API уровня 21).
  • Добавлена возможность набирать текст и отвечать на сообщения прямо из уведомлений.

Android 8.0 (API уровня 26)

  • В этой версии отдельные уведомления должны распределяться по каналам.
  • Пользователи могут отключать только каналы уведомлений, а не все уведомления из приложения сразу.
  • Добавлены пометки на значках приложений, информирующие о наличии активных уведомлений.
  • Появилась возможность откладывать уведомления прямо через панель, а также задавать для них время ожидания.
  • Пользователи могут выбрать цвет фона для каждого уведомления.
  • API, связанные с некоторыми функциями уведомлений, перемещены из объекта Notification в NotificationChannel. Например, на Android 8.0 и более поздних версий метод NotificationChannel.setImportance() следует использовать вместо NotificationCompat.Builder.setPriority().