Как происходит подписка на канал и отправка вебпушей

Если вы не знакомы с используемыми терминами SW, FCM и т.д., почитать о них можно в статье .

Подписка

1. При переходе клиента на сайт проверяем наличие разрешения на показ пушей в данном браузере.

  • Если пуши разрешены, обновляем токен и передаём в Mindbox вместе с данными по разрешению.
  • Если данные отсутствуют, показываем окно подписки.
  • Если пуши заблокированы, зависит от наличия клиента в Mindbox:
    • клиент есть - обновляем данные по разрешению;
    • клиента нет - ничего не делаем.

2. Дальше зависит от реакции клиента на окно подписки.

  • Если клиент запретил показ уведомлений - ничего не происходит, в Mindbox клиент не попадает.
  • Если клиент не отреагировал или закрыл окно подписки - оно покажется вновь при обновлении страницы
  • Если клиент дал разрешение - в mindbox создаётся клиент и передаются deviceUUID, FCM токен и разрешение на показ уведомлений.

Также из браузера в mindbox передаётся точка интеграции , или ТИ (может передаваться и из трекера).

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

Подробнее о составляющих этой связки:

  • Токен - идентификатор браузера клиента в FCM; генерируется библиотекой Firebase - процесс запускается SW браузера.

  • Device UUID - уникальный идентификатор браузера пользователя в mindbox; генерируется трекером в браузере, передаётся в Mindbox после разрешения уведомлений пользователем.

  • Точка интеграции (ТИ) - уникальный идентификатор сайта; заводится в mindbox; используется для определения нами сайта, откуда пришёл токен и куда слать пуш.

Эти данные попадают в микросервис отправки вебпушей webpush gate .

Что происходит, когда клиент повторно заходит на сайт?

Окно подписки повторно не появляется, если у клиента в браузере не выбран режим “всегда спрашивать”.

Обновляем данные по разрешению на показ пушей, при наличии разрешения - также обновляем данные по токену.

Будет ли заново создан клиент в Mindbox, если ранее его удалили из базы?

После удаления клиента из базы, он будет заново создан с подпиской на вебпуши, только если авторизуется или зарегистрируется на сайте, попав заново в базу.

Схема подписки:

20580672873c404dcb8918f0e706fec94подпискаnew.png

Отправка

При отправке рассылки в webpush gate передаются пуш и Device UUID + ТИ .

По связке Device UUID + ТИ гейт определяет, с каким токеном какой пуш отправить в FCM .

Дальше FCM отправляет уведомление в SW браузера о наличии пуша для браузера, и SW отрисовывает пуш.

Схема отправки:

205807068c0fe0b24fcc204dfc8270be7otp.png

Нестандартные автоматические рассылки на разных этапах жизненного цикла клиента