7 days of WordPress plugins, themes & templates - for free!* Unlimited asset downloads! Start 7-Day Free Trial
Advertisement
  1. Code
  2. Android SDK

Android O: Как использовать каналы уведомлений

Scroll to top
Read Time: 8 mins

Russian (Pусский) translation by Ellen Nelson (you can also view the original English article)

Final product imageFinal product imageFinal product image
What You'll Be Creating

Google запустил первый предварительный просмотр следующей версии Android для разработчиков, в настоящее время под кодовым названием Android O (возможно, Oreo?). Были выпущены некоторые интересные функции и одна из них — Notification Channels (каналы уведомлений). В этом уроке мы рассмотрим этот функционал и создадим простое приложение, демонстрирующее эту функциональность.

Что такое каналы уведомлений?

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

Мы собираемся изучить эту функцию при построении простого приложения названного «TutsplusAlerts», в котором будут два канала уведомления: Android и iOS. Пользователь получит уведомление от одного из этих каналов, как только новая статься будет опубликована.

1. Настройка Android O SDK

Чтобы начать использовать Android O API так, как тут описано, вам потребуется последная Android Studio 2.4 Canary.

Запустите Android Studio 2.4 и откройте SDK Manager, через Tools > Android > SDK Manager.

Затем во вкладке SDK Platforms, отметьте Show Package Details. Ниже Android O Preview, отметьте следующее: Android SDK Platform O и Google APIs Intel x86 Atom System Image (требуется только для эмулятора).

Android Studio SDK Manager Android Studio SDK Manager Android Studio SDK Manager

Затем переключитесь на вкладку SDK Tools и выберите следующее:

  • Android SDK Build-Tools 26.0.0 (rc1 или выше)
  • Android SDK Platform-Tools 26.0.0 (rc1 или выше)
  • Android Emulator 26.0.0
  • Support Repository

Нажмите кнопку OK, чтобы загрузить все эти компоненты.

2. Создание проекта Android Studio

В Android Studio, создайте новый проект с названием TutsplusAlerts с пустой активити MainActivity.

Android Studio new project setupAndroid Studio new project setupAndroid Studio new project setup

3. Обновление build.gradle

Перейдите к файлу модуля вашего приложения build.gradle и обновите версии compileSdkVersionbuildToolsVersion и targetSdkVersion, и наконец Support Library.

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

4. Создание каналов уведомлений

Создайте новый класс, дополняющий ContextWrapper и назовите его NotificationUtils.

В коде выше, мы создали два экземпляра NotificationChannel, передав в его конструктор id (который должен быть уникальным для вашего пакета), название канала, а также уровень важности. Для каждого канала уведомлений, мы применили такие данные, как звук, свет, вибрация и само уведомление, для отображение на заблокированном экране. Наконец, мы получили NotificationManager из системы, а затем зарегистрировали канал, вызвав метод createNotificationChannel(), передав канал, который мы создали.

С помощью createNotificationChannels(), мы можем создавать сразу несколько каналов уведомлений, передавая Java-список экземпляров NotificationChannel. С помощью getNotificationChannels() вы можете получить все каналы уведомлений для приложения, а с помощью getNotificationChannel() получить определённые каналы, передавая в качестве аргумента, только id нужного канала.

Уровни важности

Начиная с Android O, уровни очерёдности больше не работают для конкретных уведомлений. Вместо этого, вы задаете уровень важности, при создании канала уведомлений — от NotificationManager.IMPORTANCE_NONE до NotificationManager.IMPORTANCE_HIGH. Мы настроим канал Android на IMPORTANCE_DEFAULT, а канал iOS будет IMPORTANCE_HIGH.

Полный список доступных вариантов важности:

  • IMPORTANCE_MAX: не используется
  • IMPORTANCE_HIGH: показывается везде, производит шум и визуально заметен
  • IMPORTANCE_DEFAULT: показывается везде, производит шум, но визуально не заметен
  • IMPORTANCE_LOW: показывается везде, но визуально не заметен
  • IMPORTANCE_MIN: отображается незаметно
  • IMPORTANCE_NONE: уведомление без важности; не отображается даже незаметно

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

5. Создание уведомлений и отправка его по каналам

Мы создадим два Уведомления для каждого из наших каналов в классе NotificationUtils, который мы создали. В конструкторе Notification.Builder (Android API 25), мы указали, какое уведомление должно быть отправлено в канал, где мы передали id канала, в качестве второго аргумента.

Имейте в виду, что в Notification.Builder() также есть метод установки идентификатора канала уведомлений, называемый setChannel(String channelId), поэтому вы можете выбрать установку идентификатора канала уведомления либо в конструкторе, либо с помощью метода для его установки.

6. Создаем маркет XML

Теперь, когда у нас есть настройка для создания и отправки по каналам уведомлений, давайте создадим XML-макета интерфейса для размещения сообщения в нашем файле activity_main.xml.

7. Отправка уведомлений по каналам

Отправка в канал Android

В этом разделе, мы отредактирую нашу MainActivity так, чтобы сможем получать заголовок и автора из компонентов EditText, а затем отправлять в канал Android. Мы получим Notification.Builder для канала Android, который мы создали в нашем NotificationUtils, а затем уведомим (метод notify) NotificationManager.

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

Android app emulator send notification shows in notification drawerAndroid app emulator send notification shows in notification drawerAndroid app emulator send notification shows in notification drawer

Отправка в канал iOS

Теперь мы отправим сообщение на канал iOS. Мы получаем Notification.Builder для канала iOS, который мы создали в нашем NotificationUtils, а затем вызываем метод notify() в NotificationManager.

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

Android app emulator send button click shows notification in drawerAndroid app emulator send button click shows notification in drawerAndroid app emulator send button click shows notification in drawer

8. Настройки каналов уведомления

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

  • Долгим нажатием на уведомление (левое изображения снизу)
  • Настройки > Приложения и уведомления > Уведомления > затем выбрать приложение (правое изображение снизу)
Android Emulator app notification settingsAndroid Emulator app notification settingsAndroid Emulator app notification settings

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

Редактируем XML макет

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

Кодим Intent

Здесь мы создаём intent и передаем ему действие «Настройки» — ACTION_CHANNEL_NOTIFICATION_SETTINGS (API 25), а затем добавим дополнительные значения: имя пакета приложения и идентификатор (id) канала. Наконец, мы начинаем работу настройки Активити с intent.

Запустите приложение и нажмите по настройкам уведомления для канала Android.

Android emulator click android channel notification settings opens device channel settingsAndroid emulator click android channel notification settings opens device channel settingsAndroid emulator click android channel notification settings opens device channel settings

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

Если вы хотите предоставить пользователям основные настройки уведомления для вашего приложения, вы можете сделать это с помощью Intent:

9. Создание групп уведомлений

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

Мы использовали метод NotificationManagercreate NotificationChannelGroup(), передав ему экземпляр NotificationChannelGroup, которому нужны id и название группы, для создания экземпляра.

После этого, нам нужно объединить каналы уведомлений в группу, используя метод NotificationChannel.setGroup() и передав в него id группы. Если вы хотите создать несколько групп уведомлений за раз, используете createNotificationChannelGroups(), передав ему Java-список экземпляров NotificationChannelGroup.

10. Удаляем канал уведомления

Если канал уведомления больше не нужен, его можно запросто удалить. Просто используйте метод управления уведомлением deleteNotificationChannel() и передайте ему id канала.

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

Заключение

В этом уроке вы узнали том, что такое Notification Channels (каналы уведомлений) и как создать такой для Android O, а также о том, как отправить уведомление на канал, как получить доступ к настройкам канала уведомления, как копировать каналы уведомлений и как удалить канал уведомлений.

Чтобы узнать больше о каналах уведомлений — Notification Channels, обратитесь к официальной документации. В это время, посмотрите некоторые из наших других курсов и уроков по разработки для Android!


Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.