У меня есть работник службы, который получает push-уведомления, и он хорошо работает в Chrome для ПК, но не в Chrome для Android.
Иногда он работает так, как ожидалось, но иногда начинает открывать значение start_url файла manifest.json вместо значения переменной notificationURL.
URL-адрес уведомления выглядит так: https://www.example.com/abc/123/?source=notification
Значение start_url манифеста выглядит так: https://www.example.com/?source=manifest
Образец кода:
self.addEventListener('notificationclick', function(event) {
var notificationURL = event.notification.data.url;
event.notification.close();
event.waitUntil(clients.matchAll({
type: 'window'
}).then(function(clientList) {
for ( var i = 0; i < clientList.length; i++ ) {
var client = clientList[i];
if ( client.url === notificationURL && 'focus' in client ) {
return client.focus();
}
}
if ( 'openWindow' in clients ) {
// This prints "notificationURL: https://www.example.com/abc/123/?source=notification".
console.log('notificationURL:', notificationURL);
// But this opens "https://www.example.com/?source=manifest".
return clients.openWindow(notificationURL);
}
}));
});
Итак, по какой-то причине в некоторых случаях, если URL-адрес уведомления начинается с "https://www.example.com" приведенный выше код всегда будет открывать https://www.example.com/?source=manifest .
Это связано с тем, что я добавил сайт на свой домашний экран?
Это ожидаемое поведение?
Примечание. Он открывает манифест start_url, но не в автономном режиме.