Service Worker. Устранение неполадок
Скрипт для веб-пушей eSputnik загружается через файл Service Worker, который называется sw.js и размещается в корне сайта. Проблема может возникнуть в случаях, если в коде сайта уже используются файлы с таким же названием, или если на сайте уже используется другой Service Worker.
1. Изменение названия Service Worker sw.js
Некоторые конструкторы (Хорошоп, Wix и др.) по умолчанию размещают файл sw.js в корне сайтов. Поскольку файл eSputnik имеет то же название, могут возникать ошибки.
Для избежания неполадок, в скрипте eSputnik вы можете переименовать файл и при необходимости указать к нему путь.
Для этого найдите в коде скрипта eSputnik функцию инициализации
es("pushOn");
JavaScript
и добавьте к этой записи параметры в таком формате:
es("pushOn", {'service-worker': {'relUrl': '/push-worker.js'} });
JavaScript
где параметр 'relUrl' — путь к файлу и его произвольное название.
2. Объединение Service Worker от eSputnik и PWA
Сайты с PWA (progressive web app) уже используют Service Worker, т. е. они содержат JavaScript-файл с определенным набором функций. Чтобы добавить на сайт возможность подписки и отправки веб-пушей через eSputnik, вам нужно в конце JavaScript-кода вашего Service Worker добавить строчку
importScripts('https://push.esputnik.com/service-worker.js');
JavaScript
Обратите внимание
Названия функций, переменных или обработчиков в вашем Service Worker и Service Worker от eSputnik могут совпасть. В таком случае возможны конфликты, приводящие к сбоям в работе как вашего PWA, так и скрипта eSputnik.
Ниже приведен перечень названий методов (функций) в файле eSputnik:
- onPushNotification
- getNotificationContent
- showNotification
- getNotificationData
- determineClickedLink
- collectActionLinks
- trackNewServiceWorkerActivation
В случае совпадения этих названий с названиями в вашем Service Worker, будет вызываться функция, которая расположена в коде последней. Например, если код согласно этой инструкции заканчивается строчкой
importScripts('https://push.esputnik.com/service-worker.js');
JavaScript
то корректно отработает функциональность, связанная с веб-пушами.