我有一个问题。当我的 Service Worker 收到通知时:
messaging.setBackgroundMessageHandler(function(payload) {
console.log('[firebase-messaging-sw.js] Received background message ', payload);
angularClient.postMessage(payload.data);
});
如何防止浏览器显示以下内容的通知:
网站已在后台更新
我所做的就是向我的服务发送一条消息,其中将显示通知。目前它显示两个通知。一个来自我的服务,这很好,另一个说“该网站......”。
您必须在调用 onBackgroundMessage 时显示通知,并确保您返回
registration.showNotification('title', {body: 'message'})
的承诺
原因是网页推送不支持静默消息。
除了我自己创建的通知之外,我还收到了此通知。花了两天时间试图修复它。这是对我有用的代码:
self.addEventListener('push', async function(event) {
event.waitUntil(
self.registration.showNotification('title', {
body: 'body'
})
);
});
firebase v10答案,你必须返回显示通知承诺
import { getMessaging, onBackgroundMessage } from 'firebase/messaging/sw'
onBackgroundMessage(getMessaging(app), payload => {
const { title, body } = payload.data
return (
self.registration
.showNotification(title, { body })
)
})