Я работаю над реактивным проектом, который создается с помощью шаблона создания-реактивного приложения, и мне не терпится использовать такие аспекты PWA, как push-уведомление. Поэтому я создал служебный файл для push-уведомлений, который поддерживается Google Firebase, как показано ниже.
importScripts("https://www.gstatic.com/firebasejs/4.12.0/firebase-app.js");
importScripts("https://www.gstatic.com/firebasejs/4.12.0/firebase-messaging.js");
firebase.initializeApp({
messagingSenderId: "416......630"
})
const messaging = firebase.messaging()
messaging.setBackgroundMessageHandler(function(payload) {
const title = payload.notification.title;
const options = {
body: payload.notification.body,
icon: '/images/icon/appicon.png',
badge: '/images/icon/appicon.png'
}
return self.registration.showNotification(title, options);
})
self.addEventListener("notificationclick", function(event) {
const clickedNotification = event.notification;
clickedNotification.close();
const promiseChain = clients
.matchAll({
type: "window",
includeUncontrolled: true
})
.then(windowClients => {
let matchingClient = null;
for (let i = 0; i < windowClients.length; i++) {
const windowClient = windowClients[i];
if (windowClient.url === feClickAction) {
matchingClient = windowClient;
break;
}
}
if (matchingClient) {
return matchingClient.focus();
} else {
return clients.openWindow(feClickAction);
}
});
event.waitUntil(promiseChain);
})
Это служебный рабочий файл, и есть еще один файл, который инициализирует обмен сообщениями в облаке Firebase, и они работают очень хорошо. НО я не вижу значок, хотя я объявил его showNotification
вариант.
Файл рабочего сервиса находится в папке public
, а файл appicon.png
находится в папке public/images/icon
. Я уже пытался заменить путь к папке с развернутым URL, он не работал.