1.0.10 • Published 4 years ago

@alt-point/notificator v1.0.10

Weekly downloads
1
License
MIT
Repository
gitlab
Last release
4 years ago

Что это?

Пакет предназначен для отправки оповещений, используя событийно-ориентированный подход в AdonisJS

Quick start

Подготовка

Firebase
  1. В консоли GCP создайте ключ сервисного аккаунта (при необходимости — создайте сервисный аккаунт) и скачайте его в виде JSON-файла. Этот файл будет использоваться в проекте для авторизации в сервисах Google, в частности, в Firebase

  2. Установите ENV-переменную SERVICE_ACCOUNT_FIREBASE, в которой укажите путь к JSON-файлу сервисного аккаунта (из предыдущего пункта).

Настройка проекта

  1. Установите пакет
    $ adonis install @alt-point/notificator
  2. Добавьте сервис-провайдер в файл 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-уведомления, соответствующий объекту Notification
    • title — Заголовок сообщения
    • body — Текст сообщения
    • imageUrl — URL-изображения
  • options — Дополнительные параметры уведомления
    • priority — строка; normal либо high Подробнее о приоритетах рассказано в документации по Firebase
    • ttl — число; срок жизни уведомления в секундах
Пример
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
    • Email

CREDITS

Vladislav O. Muschinskikh, i@vlad.guru

© 2020

1.0.10

4 years ago

1.0.9

4 years ago