В настоящее время я пишу PWA, и у меня возникла проблема: мой сервис-воркер на IOS дважды отправляет одно и то же уведомление, и я не понимаю, почему
Это мой файл main.js >
В настоящее время я пишу PWA, и у меня возникла проблема: мой сервис-воркер на IOS дважды отправляет одно и то же уведомление, и я не понимаю, почему Это мой файл main.js > [code] // Firebase-Initialisierung in der main.js const firebaseConfig = { apiKey: "", authDomain: "", projectId: "", storageBucket: "", messagingSenderId: "", appId: "", measurementId: "" };
// Event Listener für den Button zum Anfordern der Berechtigung document.getElementById('notification-btn').addEventListener('click', () => { requestNotificationPermission(); });
// Event-Listener für empfangene Nachrichten in der App messaging.onMessage((payload) => { console.log('Nachricht empfangen:', payload);
// Nachricht nur verarbeiten, wenn die App nicht aktiv ist if (!isAppActive) { const notificationTitle = payload.notification.title; const notificationOptions = { body: payload.notification.body, icon: 'icons/icon-512.jpg' }; // Benachrichtigung anzeigen new Notification(notificationTitle, notificationOptions); } else { console.log('App ist aktiv. Nachricht nur in der Konsole angezeigt.'); } }); [/code] Это мой сервисный работник [code]importScripts('https://www.gstatic.com/firebasejs/8.6.8/firebase-app.js'); importScripts('https://www.gstatic.com/firebasejs/8.6.8/firebase-messaging.js');
// Jetzt die neue Benachrichtigung anzeigen self.registration.showNotification(title, notificationOptions);
// Benachrichtigung nach 3 Sekunden schließen setTimeout(() => { self.registration.getNotifications().then(notifications => { notifications.forEach(notification => { if (notification.title === title && notification.body === body) { notification.close(); // Löschen der Benachrichtigung } }); }); }, 3000); }); }
// Benachrichtigungen im Hintergrund verarbeiten messaging.onBackgroundMessage(function (payload) { console.log('Benachrichtigung im Hintergrund empfangen:', payload);
const notificationTitle = payload.notification.title || 'Neue Benachrichtigung'; const notificationBody = payload.notification.body || 'Du hast eine neue Nachricht.';
// Benachrichtigung mit Verzögerung anzeigen showNotificationWithDelay(notificationTitle, notificationBody); });
// Klick-Listener für die Benachrichtigungen self.addEventListener('notificationclick', function (event) { const notification = event.notification; event.waitUntil( clients.matchAll({ type: 'window', includeUncontrolled: true }).then(clientList => { for (const client of clientList) { if (client.url === '/' && 'focus' in client) { return client.focus(); } } if (clients.openWindow) { return clients.openWindow('/'); } }) ); notification.close(); }); [/code] Я столько спрашивал прпбир и чатгпт, но он не может дать мне обоснованного ответа и поэтому надеюсь на помощь здесь