1.3.6 • Published 2 months ago
push-web-widget v1.3.6
push-web-widget
Widget для отображения web-push сообщений
Использование:
- Регистрируемся или аутентифицируемся на Firebase
- Получаем доступ к проекту web-push-widget в консоли firebase
- Kлонируем данный репозиторий из гитлаба
- Подтягиваем зависимости с помощью команды
yarn
- Устанавливаем инструменты firebase через
npm install -g firebase-tools
илиyarn global add firebase-tools
- Аутентифицируемся в firebase через команду
firebase login
(нужно указать ту же почту, на которую получали доступ к web-push-widget выше) - Запускаем локально
yarn start
- Переходим на http://localhost:5000
- Разрешаем отправку уведомлений
Разработка:
- Отправка пушей производится из админки push-платформы https://pushservertest.edna.ru/
- Наш аккаунт для тестирования
eshkirya
/svVr0ner
- На http://localhost:5000 смотрим параметры устройства - адрес и UID
- На https://pushservertest.edna.ru/ переходим в
Список устройств
, находим устройство с нашим UID - Выбираем
Отправить сообщение
, заполняем обязательные поля - Если все хорошо - получим пуш-уведомление на http://localhost:5000
Структура проекта:
- src/demo_page и src/prod_page это макеты для демо и прод стендов соответственно (там же стили к ним)
- проект лежит в папке src/modules
- EventEmitter - публичный класс для подписки и отправки событий
Особенности проекта:
- обработка и вывод всех уведомлений происходит в сервис воркере
- важно помнить, что сервис воркер имеет свой отдельный поток выполнения и не имеет доступа к основному потоку (то есть доступа к объекту window)
- общение между потоками сейчас реализвано через BroadcastChannel
- если возникает ошибка "Этот сайт был обновлен в фоновом режиме", значит где-то в воркере не прописан event.waitUntil() или дожидаемся не всего, что нужно
- стилизовать пуш уведомление невозможно
- если заметили, что sw не обновился, возможно он ждет активации - это нужно проверить в devtools во вкладке Application - Service Workers (свежий воркер может быть неактивным - нажать 'skip waiting')
- при возникновении ошибки 'доступ к localhost запрещен', нужно перезапустить ВПН
- документацию по инициализации Firebase приложения можно посмотреть на сайте Firebase (firebase-messaging)
Dev-Использование:
- Выполняем первые 7 пунктов из раздела
Использование
- Запускаем локально в двух окнах терминала:
yarn start
,yarn watch:webpack
- Переходим на
http://localhost:5000
Регистрация нового получателя уведомлений
- Создать новое приложение в рамках одного проекта на Firebase
- Передать конфиг приложения в публичный метод
initFirebaseApp
при запуске площадки
Возможные проблемы с получением токена
- Проверять, что конфиг принадлежит нужному проекту (можно посмотреть по урлу, на который идет ПОСТ запрос за токеном)
- Проверять актульность VAPID key (если что просто генерить новый)
Стенды
- https://push-web.dte/ - демо-стенд (дев-сборка)
- https://push-web-release.dte - прод-стенд (прод-сборка)
Документация
Библиотека Web https://wiki.edna.ru/pages/viewpage.action?pageId=15471891#id-Индексдокументов-БиблиотекаWeb Стандарт PushAPI https://www.w3.org/TR/push-api/