Reactjs Firebase云消息传递不';不显示窗口焦点时的通知
最近开始使用FCM,有两种情况,一种是在浏览器窗口中,您将使用事件侦听器在窗口内收到应用程序内通知;另一种是在浏览器窗口外,您将收到桌面通知 在我的特殊情况下,每当我在窗口上时,只要接收到某个消息对象,我就会调用API来获取数据Reactjs Firebase云消息传递不';不显示窗口焦点时的通知,reactjs,firebase,redux,firebase-cloud-messaging,Reactjs,Firebase,Redux,Firebase Cloud Messaging,最近开始使用FCM,有两种情况,一种是在浏览器窗口中,您将使用事件侦听器在窗口内收到应用程序内通知;另一种是在浏览器窗口外,您将收到桌面通知 在我的特殊情况下,每当我在窗口上时,只要接收到某个消息对象,我就会调用API来获取数据 navigator.serviceWorker.addEventListener("message", ({ data }) => { dispatch(getNotifications(10)); }); 这很好,但是当我有一个打开的选
navigator.serviceWorker.addEventListener("message", ({ data }) => {
dispatch(getNotifications(10));
});
这很好,但是当我有一个打开的选项卡,但我在另一个窗口上时,FCM不会获取此消息对象,并且没有调用任何事件侦听器,基本上我必须刷新页面或使用window.onfocus在返回选项卡时重新调用api
任何有解决方法的人?当您在另一个选项卡上时,Firebase都不会显示该消息,很遗憾 但是您可以使用开箱即用的API。它就像一个符咒。 在服务人员中,您可以添加以下内容:
const broadcast = new BroadcastChannel('background-message');
messaging.onBackgroundMessage(message => {
broadcast.postMessage(message);
})
然后在应用程序中收听“背景信息”:
const broadcast = new BroadcastChannel('background-message');
broadcast.onmessage = (event) => {
console.log('message from service-worker:', event.data)
};
更新:这在safari上不起作用,但此解决方案似乎有效: