Перейти к содержанию

Подключение уведомлений на Android🔗

Для интеграции уведомлений необходимо выполнить несколько простых шагов

Получение уведомлений🔗

Шаг 1. Импортируйте модуль уведомлений🔗

dependencies {
    def mrgsVersion = "6.x.x"
    implementation "games.my.mrgs:notifications:$mrgsVersion"
}
  • Загрузите последнюю версию библиотеки с сайта MRGS.
  • Извлеките модуль MRGSNotifications из архива.
  • Скопируйте файл MRGSNotifications.aar в директорию libs вашего проекта.
  • Добавьте необходимые зависимости в файл build.gradle
dependencies {
    implementation(name: 'MRGSNotifications', ext:'aar')

    implementation 'androidx.appcompat:appcompat:1.6.1'
    implementation 'com.google.firebase:firebase-messaging:23.1.2'

    // Uncomment for Huawei/AppTouch Store
    // implementation 'com.huawei.hms:push:6.11.0.300'
}

Иконки в уведомлениях

Если вы хотите использовать в уведомлениях иконки отличные от иконок приложения, укажите их имена файлов при инициализации MRGS (имя файла с иконкой, без расширения png, который лежит в директории res/drawable вашего проекта)

Разрешение на показ уведомлений

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

Шаг 2. (Опционально) Серверные уведомления🔗

Если вы хотите отправлять уведомления на клиент через ваш сервер или сервер MRGS, необходимо подключить Firebase Cloud Messaging или Huawei Push Kit для Huawei/AppTouch Store.

Firebase Cloud Messaging🔗

  • Скопируйте файл google-services.json, загруженный из консоли Google Firebase в корень вашего проекта
  • Добавьте в build.gradle файл зависимость от плагина google-services
buildscript {
    repositories {
        google()
        jcenter()
    }
    dependencies {
        //...
        classpath 'com.google.gms:google-services:4.3.13'
    }
}
  • Добавьте вызов плагина google-services последней строкой в файле build.gradle
apply plugin: 'com.google.gms.google-services'

Huawei Push Kit🔗

  • Зайдите в AppGallery Connect и нажмите Мои проекты.
  • Найдите и выберите свой проект.
  • Перейдите в раздел Настройки проекта > Основная информация и загрузите connect-services.json-файл из области Данные приложения. Добавьте данный json-файл в корень вашего проекта.
  • Добавьте в build.gradle файл зависимость от плагина agconnect
buildscript {
    repositories {
        google()
        jcenter()
    }
    dependencies {
        //...
        classpath 'com.huawei.agconnect:agcp:1.8.0.300'
    }
}
  • Добавьте вызов плагина agconnect последней строкой в файле build.gradle
apply plugin: 'com.huawei.agconnect'
  • Полную информацию по интеграции Huawei Push Kit можно найти в документации.

Важно

На последних девайсах Huawei как правило отсутствуют Google Services, поэтому подключение таких библиотек как Firebase или других библиотек, требующих наличие Google Services, будет иметь малый эффект. Просто имейте ввиду Huawei Store нацелен на работу со своими сервисами так же как и Google Play со своими.

Шаг 3. Настройте делегат получения уведомлений🔗

Для получения callback'a о приходе уведомления, или о нажатии по нему, необходимо установить слушатель событий

import games.my.mrgs.MRGSMap;
import games.my.mrgs.notifications.MRGSNotificationCenter;
import games.my.mrgs.notifications.MRGSPushNotificationHandler;

final MRGSPushNotificationDelegate notifyDelegate = new MRGSPushNotificationDelegate() {
    @Override
    public void clickOnNotification(int idNotify, String title, String msg, MRGSMap developerPayload, boolean isLocal) {

    }

    @Override
    public void receivedNotification(int idNotify, String title, String msg, MRGSMap developerPayload, boolean isLocal) {

    }
};

* idNotify - id уведомления, которое было запланировано
* title - заголовок уведомления
* msg - сообщение уведомления
* developerPayload - дополнительная информация, если разработчик ее добавлял при создании уведомления
* isLocal - true если это локальное уведомление, false если серверное

## Работа с уведомлениями

!!! danger "Важно"
    Прежде чем работать с **MRGSNotifications** модулем, нужно инициализировать **MRGService**.

!!! danger "Разрешение на показ уведомлений"
    Если у пользователя версия Android 13 или выше при инициализации будет запрошено разрешение на показ уведомлений, если не был выставлен параметр отложенного старта уведомлений.
    Более подробно можно узнать в разделе [Ручное управление регистрацией и запросом разрешения](./enhanced.md#manual-register)

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

Для создания уведомлений используется класс `MRGSPushNotification`. Для отображения уведомления необходимо создать экземпляр этого класса с помощью метода `create` и указать основные параметры уведомления: id (цифровой идентификатор уведомления, по которому вы сможете определять, какое уведомление сработало), текст сообщения (message) и время в секундах в формате Unix Time, когда должно сработать уведомление.

```java
int time = MRGS.timeUnix() + 10; // Через 10 секунд
int notifyId = 12345;
MRGSPushNotification notification = MRGSPushNotification.create("Локальное пуш уведомление", notifyId, time);

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

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

import games.my.mrgs.notifications.MRGSNotificationCenter;

MRGSNotificationCenter.getInstance().addLocalPush(notification);
Собственный канал и группа уведомлений

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

notification.setChannelId("my_channel_id");
notification.setChannelGroupId("my_group_id");

MRGSNotificationCenter.getInstance().addLocalPush(notification);

Получение списка уведомлений🔗

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

import games.my.mrgs.MRGSList;
import games.my.mrgs.notifications.MRGSNotificationCenter;

MRGSList notifications = MRGSNotificationCenter.getInstance().getAllLocalPushes();

Получение информации по уведомлению🔗

Если вы хотите получить объект MRGSPushNotification по его id, воспользуйтесь методом

import games.my.mrgs.notifications.MRGSNotificationCenter;
import games.my.mrgs.notifications.MRGSPushNotification;

MRGSPushNotification notification = MRGSNotificationCenter.getInstance().getLocalPush(notificationId);

Отмена уведомлений🔗

Если вы хотите отменить (удалить) запланированное уведомление, воспользуйтесь методом

import games.my.mrgs.notifications.MRGSNotificationCenter;

MRGSNotificationCenter.getInstance().removeLocalPush(context, notificationId);
  • context - Application Context
  • notificationId - id уведомления, который вы указывали при вызове метода MRGSPushNotification.create

Видимость уведомлений на LockScreen(Secure)🔗

Если требуется дополнительное управление видимость уведомлений на защищенном LockScreen(Который защищен паролем, пинкодом и тд.) необходимо указать область видимости.

import games.my.mrgs.notifications.MRGSNotificationCenter;
import games.my.mrgs.notifications.MRGSPushNotification;

MRGSPushNotification notification = MRGSPushNotification.setVisibility(visibility);
MRGSNotificationCenterImpl.getInstance().addLocalPush(notification);
  • visibility - один из параметров MRGSPushNotification.VISIBILITY_PUBLIC, MRGSPushNotification.VISIBILITY_PRIVATE, MRGSPushNotification.VISIBILITY_SECRET;

Особенности поведения

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

  • Show all notification content
  • Hide sensitive content
  • Don’t show notifications at all

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

И того, при сочетании Screen lock и области видимости Notification получается следующие поведения:

LockScreen с Show all notification content: VISIBILITY_PUBLIC и VISIBILITY_PRIVATE - отображают уведомления на LockScreen без каких либо ограничений. VISIBILITY_SECRET - не отображает уведомления на LockScreen

LockScreen с Hide sensitive content: VISIBILITY_PUBLIC - отображают уведомления на LockScreen без каких либо ограничений. VISIBILITY_PRIVATE - отображает уведомление но не отображает его содержимое. VISIBILITY_SECRET - не отображает уведомления на LockScreen.

LockScreen с Don’t show notifications at all: Никакие уведомления не могут быть показаны на Lock screen.

Помните, что конечное поведение уведомлений на LockScreen зависит только от пользователя.


Последнее обновление: 2025-01-21
Дата создания: 2020-01-20