簡體   English   中英

FCM網站背景服務人員

[英]FCM web background service worker

當我的網頁處於后台(窗口最小化或其他標簽)時,我無法使其接收到推送消息,它僅顯示正常的通知,但是當我嘗試發送時,page.js中沒有任何反應回發信息。

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

當我發送消息並進入網頁時,將顯示控制台日志並播放聲音:

客戶端1收到消息:[對象對象]

但是永遠不要在后台。

請有人幫助,已經好幾個月了。

終於我找到了我的問題!

我正在通過通知部分發送FCM消息,並且阻止了使用Service Worker功能將消息發布回我的頁面。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM