Инструкция по подключению мобильных пуш-уведомлений (Android)

Для подключения мобильных пуш-уведомлений необходимо запросить библиотеку у вашего персонального менеджера. Или напишите нам на experts@enkod.io

1. Подключение модуля

Для добавления модуля в проект, необходимо поместить папку EnkodPushLibrary на одном уровне с модулем app.

В settings.gradle добавить:

include ':EnkodPushLibrary'    

Для данной библиотеки minSdkVersion = 23

В AndroidManifest в manifest добавить:

<uses-permission android:name="android.permission.INTERNET" />

В AndroidManifest в application добавить:

android:usesCleartextTraffic="true"  

2. Инициализация зависимостей

1. В gradle файл уровня модуля app следует добавить зависимость модуля библиотеки:

implementation project(path: ':EnkodPushLibrary') 

2. В gradle файл уровня модуля app следует добавить зависимость FCM (тестировалось на версии 23.0.5):

implementation 'com.google.firebase:firebase-messaging:23.0.5'  

3. Также следует добавить плагин сервисов Google:

id 'com.google.gms.google-services'  // Google Services plugin 

4. В gradle файла уровня приложения следует добавить зависимость сервисов Google:

dependencies {
...
    classpath 'com.google.gms:google-services:4.3.5'
...
}   

5. В gradle файла уровня приложения следует добавить репозиторий Google:

repositories {
...
    google()
...
} 

6. Для инициализации библиотеки необходимо вызвать в вашем Application классе билдер и указать параметры:

EnkodPushLibrary.Builder()
    .setOnTokenListener{}
    .setOnMessageReceiveListener { showToast(it.messageId) }
    .setOnDeletedMessageListener { showToast("message deleted") }
    .setOnDynamicLinkClickListener { string-> }
    .setOnProductCallBackListener { }
    .setOnErrorListener { errorToast(it) }
    .setOnBaseUrlCheckerListener {  }
    .setOnPushClickListener { bundle: Bundle, str: String-> }
    .build(applicationContext, «account») 

где account - системное имя вашего аккаунта в enKod (запросите у персонального менеджера)

Методы и условия срабатывания:

  • setOnTokenListener - при обновлении токена, также он будет вызван во время инициализации и в него будет передан токен для дальнейшей обработки
  • setOnMessageReceiveListener - при получении на устройство нового пуш-уведомления, в него передается это самое сообщение
  • setOnDeletedMessageListener - при вызове onDeletedMessages в сервисе по управлению пушами, согласно https://firebase.google.com/docs/cloud-messaging/android/receive#override-ondeletedmessages
  • setOnDynamicLinkClickListener - при открытии пуш-уведомления с динамической ссылкой, в него передается эта ссылка
  • setOnProductCallBackListener - метод, который срабатывает при отрабатывании методов для работы с товарами
  • setOnErrorListener - метод, срабатывающий при возникновении ошибок при обращении к серверу
  • setOnBaseUrlCheckerListener - метод для обработки BaseUrl
  • setOnPushClickListener - при открытии пуш-уведомления
  • build - инициализация библиотеку и всех ее переменные, в него нужно передать контекст и имя клиента

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

  • subscribeToPush и unsubscribeFromPush - методы для подписки и отписки от пушей, после их вызова будет отправлен соответствующий запрос на сервер

3. Обработка нажатия на пуш

При открытии приложения через пуш открывается активити, указанная в пуше, она отправляет запрос на сервер о том что пуш был открыт и будет вызван метод .setOnPushClickListener {, если это была динамическая ссылка, то дополнительно будет вызван метод setOnDynamicLinkClickListener { str-> }

4. Выход из учетной записи и регистрация

Для того чтобы прекратить прием уведомлений при выходе из учетной записи, необходимо использовать метод logOut(), который удалит текущий токен и очистит инстанс Firebase. Для того чтобы возобновить получение уведомлений, необходимо вызвать метод createToken() для создания нового токена.

Для использования собственного обработчика deep link при инициализации библиотеки в setOnDynamicLinkClickListener { } необходимо передать собственный обработчик. В противном случае нажатие будет обработано встроенными методами библиотеки.

6. Модель сообщения

"notification": {
    "click_action":".OnOpenActivity",
    "body":"Body of Your Notification",
    "icon":"ic_launcher_background",
    "title":"Title of Your Notification",
    "color":"#FFEE1000",
    "image":"https://picsum.photos/200/300",
},
"data": {
    "intent":"0",
    "url":"https://www.gsrikar.com/2018/12/read-metadata-from-andriod-manifest.html",
    "priority":"0",
    "led":"#FFEE1000",
    "led_on":"300",
    "led_of_ms":"100",
    "hasVibro":"true",
    "hasSound":"true",
    "channel":"enkod_lib_59",
    "personId":20,
    "messageId":10,
    "intent1":"1",//актуально для кнопок в уведомлении
    "url1":"testapp://screen1",//актуально для кнопок в уведомлении
    "label1":"Text in button1",//актуально для кнопок в уведомлении
}                      

Значение данных

"click_action" Activity, которая обрабатывает нажатия, следует указать OnOpenActivity
"body" текст тела пуша
"icon" название ресурса иконки
"title" заголовок пуша
"color" цвет иконки пуша
"image" url для изображения
"intent" действие, которое будет выполнено по нажатию по пушу:
  • "0" - произойдет открытие приложения с передачей туда динамической ссылки для дальнейшей ее обработки
  • "1" - открытие ссылки в браузере
  • "любое другое значение" - будет открыто приложение
"url" ссылка динамическая или для открытия в браузере
"priority" приоритет пуша, принимает значения:
  • "-2" - PRIORITY_MIN
  • "-1" - PRIORITY_LOW
  • "0" - PRIORITY_DEFAULT
  • "1" - PRIORITY_HIGH
"led" цвет индикатора
"led_on":"300" время включенного индикатора
"led_of_ms":"100" время выключенного индикатора
"hasVibro":"true" имеет ли вибрацию или нет
"hasSound":"true" имеет звук или нет
"channel":"enkod_lib_59" id канала
Последнее изменение: 2023.10.19 06:26 — Anastasia Aniskova