@alt-point/notificator
v1.0.10
Published
Adonis notification library
Downloads
3
Readme
Что это?
Пакет предназначен для отправки оповещений, используя событийно-ориентированный подход в AdonisJS
Quick start
Подготовка
Firebase
В консоли GCP создайте ключ сервисного аккаунта (при необходимости — создайте сервисный аккаунт) и скачайте его в виде JSON-файла. Этот файл будет использоваться в проекте для авторизации в сервисах Google, в частности, в Firebase
Установите ENV-переменную
SERVICE_ACCOUNT_FIREBASE
, в которой укажите путь к JSON-файлу сервисного аккаунта (из предыдущего пункта).
Настройка проекта
- Установите пакет
$ adonis install @alt-point/notificator
- Добавьте сервис-провайдер в файл
start/app.js
:const providers = [ … '@alt-point/notificator/providers/NotifyProvider', ]
Отправка уведомлений
Отправлять оповещения можно из любого участка проекта путём вызова событий:
notify::push
— Push-уведомлениеnotify::sms
— SMS (не реализовано)notify::email
— Email-сообщение (не реализовано)
PUSH
Объект event
Событие является JS-объектом и имеет следующие свойства:
to
— массив, содержащий push-токены получателейpayload
— Содержимое push-уведомления, соответствующий объекту Notificationtitle
— Заголовок сообщенияbody
— Текст сообщенияimageUrl
— URL-изображения
options
— Дополнительные параметры уведомленияpriority
— строка;normal
либоhigh
Подробнее о приоритетах рассказано в документации по Firebasettl
— число; срок жизни уведомления в секундах
Пример
const Event = use('Event')
Event.emit('notify::push', {
to: [
'fZX8gkoESG2giOS2HufEe7:APA91bEvJ91ol20GaJlHJIZnbo1XgyXK-lgt-lmGMeR-l6k2pPttL6DKpX66MTw4aj1nW8JOLNc6UfobBcx47IXd2jkmJAaU8hg2lQ5PlX0awYtmrlAKHN5CAD7APT5bdtgi5U8k9zOf'
],
payload: {
title: 'Test notification',
body: 'Hello, world!'
},
})
Продвинутое использование
Помимо использования событий, также можно вызывать функцию отправки сообщений напрямую через класс Firebase:
const Firebase = use('AltPoint/Notify/Firebase')
// Для отправки одному получателю
Firebase.sendNotification(token, payload, options)
.then(console.info)
.catch(console.error)
// Для отправки нескольким получателям
Firebase.sendNotificationMulticast(tokens, payload, options)
.then(console.info)
.catch(console.error)
Обратите внимание! При отправке одному полчателю в качестве параметра
token
передаётся один push-токен (как строка), а при отправке мультикаст-сообщения нескольким получателям в качествеtokens
передаётся массив строк с токенами получателей. В качестве аргументовpayload
иoptions
используются объекты того же формата, что используется в объектеevent
при отправке черезEvent.emit()
Супер-продвинутое использование
Для более тонкой настройки отправляемых сообщений можно использовать функции send()
и sendMulticast()
:
const Firebase = use('AltPoint/Notify/Firebase')
Firebase.send(message)
.then(console.info)
.catch(console.error)
Firebase.sendMulticast(message)
.then(console.info)
.catch(console.error)
Данные функции являются обёртками для SDK-функций send() и sendMulticast() соответственно.
В качестве аргумента message
передаётся объект Message
Обратите внимание! При отправке через функцию sendMulticast() в одном сообщении можно передать не более 500 токенов-получателей, в то время как через
Firebase.sendNotificationMulticast()
позволяет передать неограниченное количество токенов — в этом случае массив получателей будет автоматически разделён на чанки по 500 токенов, и сообщение (при необходимости) будет разбито на несколько.
Ninja-style
Если нужен более продвинутый функционал, то через свойство Firebase.app
можно получить объект App из Firebase Admin SDK и работать с ним напрямую:
const Firebase = use('AltPoint/Notify/Firebase')
Firebase.app.messaging()
.send(message)
.then(console.info)
.catch(console.error)
TODO
- Реализовать поддержку прочих траспортов для отправки уведомлений
- SMS
CREDITS
Vladislav O. Muschinskikh, [email protected]
© 2020