网络推送 messaging.setBackgroundMessageHandler 不工作

Web push messaging.setBackgroundMessageHandler not working

我使用 Google Firebase 服务在我的网站上实现了网络推送通知。 firebase.google.com/docs/cloud-messaging/js/client

我对其进行了测试,一切正常,但是当我的网站 window 不在焦点(它在后台)或关闭时,如果我收到推送通知,它将在 20 秒后消失。

在我的 https://hdlava.me/j/firebase_subscribe.js 文件中添加了

requireInteraction: true 

在 messaging.onMessage 中标记,这样如果我在打开网站时收到推送消息,除非我单击它,否则消息不会消失。

我试着添加这个

requireInteraction: true

in messaging.setBackgroundMessageHandler 在我的 https://hdlava.me/firebase-messaging-sw.js 中,但它不起作用。甚至:

console.log('[firebase-messaging-sw.js] Received background message ', payload)

不起作用。看起来整个 messaging.setBackgroundMessageHandler 不起作用。

谁能帮我找出问题所在?另外,如果我在 firebase-messaging-sw.js

中使用

self.addEventListener("push",function(event)

而不是 messaging.setBackgroundMessageHandler 所以我同时收到两条消息。第一条消息消失,第二条消息消失,但第二条消息不可点击。是否可以阻止第一条消息并使第二条消息可点击?

参考 FCM 文档:

https://firebase.google.com/docs/cloud-messaging/js/receive

"Note: If you set notification fields in your HTTP or XMPP send request, those values take precedence over any values specified in the service worker."

所以,如果你有

{
    "notification": {
      "title": "Your title",
      "body": "Your message"
    },
    "to": "topic",
}

它永远不会触发 BackgroundMessageHandler。因为以这种方式发送数据,只会覆盖您的变量。如果你想触发它,你需要像这样发送你的通知:

{
    "data": {
      "notification": {
        "title": "Your title",
        "body": "Your message"
      }
    },
    "to": "topic",
}