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

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

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

Итак, не теряя времени зря, приступим.

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

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

Структура:

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

Вот наиболее важные части уведомления:

  • Маленький значок: требуется и устанавливается с помощью setSmallIcon ()
  • Большой значок: необязательно и устанавливается с помощью setLargeIcon ()
  • Заголовок: необязательный и устанавливается с помощью setContentTitle ()
  • Текст: необязательный и устанавливается с помощью setContentText ()
  • Имя приложения: предоставляется системой
  • Отметка времени: предоставляется системой, но может быть отменена с помощью setWhen ()

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

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

Различные виды уведомлений:

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

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

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

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

Обратите внимание, что нам нужно передать строку CHANNEL_ID в конструктор NotificationCompat, чтобы убедиться, что наше уведомление совместимо с Android 8.0 (Oreo) или выше.

Предупреждающее уведомление:

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

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

В этом примере мы создаем хедз-ап уведомление, устанавливая высокий приоритет.

Примечание. Я отключил функцию вибрации ниже, поэтому нам не нужно запрашивать разрешение на вибрацию.

Экран блокировки:

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

  • VISIBILITY_PUBLIC показать полное содержание уведомления
  • VISIBILITY_PRIVATE показывает основную информацию, такую ​​как значок и заголовок.
  • VISIBILITY_SECRET не показывает уведомление на экране блокировки

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

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

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

Значок значка приложения:

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

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

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

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

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

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

Действие OnClick:

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

После этого нам просто нужно установить Intent содержимого в нашем уведомлении на PendingIntent.

Мы также можем включить автоматическое удаление уведомления, когда пользователь нажимает на уведомление, используя функцию setAutoCancel ().

Кнопки действий при уведомлении:

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

Чтобы добавить кнопку действия к нашему уведомлению, мы передаем PendingIntent функции addAction ().

Функция addAction () принимает три параметра: значок действия, заголовок кнопки и pendingIntent для действия.

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

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

В этом примере мы устанавливаем для Style значение NotificationCompat.BigPictureStyle и устанавливаем большое изображение, которое будет отображаться при использовании уведомления.

Мы также можем отображать большие блоки текста, установив стиль на NotificationCompat.BigTextStyle.

Дополнительные возможности см. В официальной документации.

Индикатор:

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

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

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

В этом примере я использовал простой цикл for, который каждый раз откладывает поток на 100 миллисекунд.

Показать уведомление:

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

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

Группа уведомлений:

Теперь, когда вы знакомы со структурой и действиями уведомлений, давайте посмотрим, как мы можем группировать уведомления вместе. Это часто используется приложениями, которые могут отправлять множество уведомлений за короткий период времени, например, в социальных сетях, таких как WhatsApp.

Для реализации этого вам необходимо создать группу уведомлений и добавить в нее свое уведомление.

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

Нам также необходимо предоставить сводку уведомлений для версий ниже 7.0 (API 24), что мы можем сделать с помощью функции setGroupSummary ().

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

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

Еще одна очень важная часть уведомлений - это канал уведомлений, который требуется для всех уведомлений на Android Oreo (8.0) и выше. Каждый канал определяет визуальное и слуховое поведение всех уведомлений, представленных в канале.

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

Создайте канал уведомлений:

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

В этом примере мы создаем простой канал уведомлений и регистрируем его в системе с помощью функции createNotificationChannel ().

Удаление канала уведомлений:

Иногда нам также нужно удалить канал уведомлений, если он нам больше не нужен. Мы можем сделать это с помощью функции deleteNotificationChannel () в нашем NotificationManager.

Пользовательский макет:

Как уже говорилось выше, также можно создавать свои полностью настраиваемые макеты для уведомлений. Это можно сделать, создав два настраиваемых макета и задав их с помощью функций setCustomContentView () и setCustomBigContentView ().

Макеты:

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

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

Установите макеты:

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

Для этого нам сначала нужно получить макеты и сохранить их в переменных.

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

Примечание. Чтобы это работало, вам также необходимо установить стиль на DecoratedCustomViewStyle.

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

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



«Внедрение зависимостей в Android
Сегодня мы собираемся подробно обсудить внедрение зависимостей в Android и почему вы должны его использовать. android.jlelse. Евросоюз"



Вывод:

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

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

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

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