Ich kann es nicht machen, um die Push-Nachricht zu erhalten, wenn meine Webseite im Hintergrund ist (das Fenster minimiert, oder ein anderes Etikett), es zeigt nur die Benachrichtigung, die in Ordnung ist, aber nichts passiert in meinem page.js, wenn ich versuche, eine Nachricht zurück zu senden.FCM Web Hintergrund Service Arbeiter
sw.js:
messaging.setBackgroundMessageHandler(function (payload) {
console.log('[firebase-messaging-sw.js] Received background message ', payload);
const title = '¡Mensaje Nuevo!';
const options = {
body: 'conductor: ' + payload.data.chofer_id + ' - ' + payload.data.mensaje,
icon: '/icono.png',
};
send_message_to_all_clients('sound');
return self.registration.showNotification(title, options);
});
function send_message_to_all_clients(msg) {
clients.matchAll().then(clients => {
clients.forEach(client => {
send_message_to_client(client, msg).then(m => console.log("SW Received Message: " + m));
})
})
}
function send_message_to_client(client, msg) {
return new Promise(function (resolve, reject) {
var msg_chan = new MessageChannel();
msg_chan.port1.onmessage = function (event) {
if (event.data.error) {
reject(event.data.error);
} else {
resolve(event.data);
}
};
client.postMessage("SW Says: '" + msg + "'", [msg_chan.port2]);
});
}
page.js
// Handler for messages coming from the service worker
navigator.serviceWorker.addEventListener('message', function (event) {
console.log("Client 1 Received Message: " + event.data);
$.playSound('Sounds/Tethys.mp3');
});
Wenn ich eine Nachricht senden, und ich bin auf der Web-Seite, die Konsolenprotokoll zeigt und der Ton spielt:
Client 1 Empfangene Nachricht: [Objekt Objekt]
Aber nie im Hintergrund.
Bitte jemand helfen, es hat lange Monate gedauert.