0

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.

Antwort

0

endlich habe ich mein Problem gefunden!

Ich habe die FCM-Nachricht mit dem Benachrichtigungsabschnitt gesendet, und es wurde verhindert, die Nachricht mit der Service-Worker-Funktion auf meine Seite zurückzusetzen.

{ 
    "to": "<token>", 
"notification": { // this was the problem 
    "body": "test" 
    } 
    "data": { 
    "chofer_id": 3, 
    "mensaje": "hola" 
    } 
}