0

ウェブページがバックグラウンド(ウィンドウが最小化されている、または別のラベル)になっているときにプッシュメッセージを受け取ることができません。通知はOKですが、私が投稿メッセージを送り返そうとすると、page.js。FCMウェブバックグラウンドサービスワーカー

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'); 
}); 

私がメッセージを送信し、私は、Webページ上のよ、コンソールログショーや音の再生:

クライアント1受信メッセージ:[オブジェクトオブジェクト]

ただし、バックグラウンドはありません。

誰か助けてください、それは長い月でした。

答えて

0

最後に私の問題が見つかりました!

通知セクションでFCMメッセージを送信していたため、サービスワーカー機能を使用してメッセージをページに戻すことができませんでした。

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