Service Worker. Усунення несправностей
Скрипт для веб-пушів eSputnik завантажується через файл Service Worker, який називається sw.js та розміщується в корені сайту. Проблема може виникнути у випадках, коли в коді сайту вже використовуються файли з такою самою назвою, або якщо на сайті вже використовується інший Service Worker.
1. Зміна назви 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
то коректно відпрацює функціональність, пов'язана із веб-пушами.