网络推送 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",
}
我使用 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",
}