Цель состоит в том, чтобы, когда пользователь нажимает на уведомление браузера, посмотреть, открыта ли уже страница и go к ней, а если нет, открыть ее в новой вкладке или окне.
это выполнимо при использовании собственного работника сервиса, использующего этот код
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 === urlToOpen) {
matchingClient = windowClient;
break;
}
}
if (matchingClient) {
return matchingClient.focus();
} else {
return clients.openWindow(urlToOpen);
} });
event.waitUntil(promiseChain);
, но в angular у них есть своя собственная оболочка работника сервиса, и он генерирует файл работника сервиса во время выполнения.
мой код в angular теперь это
this.swPush.notificationClicks.subscribe(
({ action, notification }) => {
if (notification && notification !== null && notification['data']) {
const url = notification['data'].url;
window.open(url, '_blank');
}
});
Итак, во-первых, есть ли способ реализовать это в angular (swPu sh)?
, если нет, у меня есть редактировать сгенерированный файл рабочего сервиса и как (лучшие практики)? или я могу импортировать другой файл рабочего сервиса?