reactjs - Firebase 云消息传递在窗口焦点之外时不显示通知

标签 reactjs firebase redux firebase-cloud-messaging

最近开始研究 FCM,有两种情况,要么您在浏览器窗口中,您将使用事件监听器在窗口内收到应用程序内通知,要么如果您离开浏览器窗口,您将收到桌面通知。

在我的特殊情况下,每当我在窗口上时,只要收到某个消息对象,我就会调用 API 来获取数据

navigator.serviceWorker.addEventListener("message", ({ data }) => {
  dispatch(getNotifications(10));
});

这工作正常,但是当我有一个打开的选项卡但我在另一个窗口上时,FCM 没有获取此消息对象并且没有调用事件监听器,本质上我必须刷新页面或使用 window.onfocus当我返回选项卡时重新调用 api。

有人有解决方法吗?

最佳答案

遗憾的是,当您在另一个选项卡上时,Firebase 不会显示该消息。

但是您可以使用 BroadcastChannel开箱即用的 API。它就像一个魅力。 在您的 serviceworker 中,您可以添加以下内容:

const broadcast = new BroadcastChannel('background-message');

messaging.onBackgroundMessage(message => {
    broadcast.postMessage(message);
})

然后在您的应用程序中收听“background-message” channel :

const broadcast = new BroadcastChannel('background-message');
broadcast.onmessage = (event) => {
  console.log('message from service-worker:', event.data)
};

关于reactjs - Firebase 云消息传递在窗口焦点之外时不显示通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65086364/

相关文章:

javascript - 使无框架的 React/Electron 应用程序标题栏在滚动期间不消失

reactjs - 错误 : Too many re-renders. React 限制渲染次数以防止无限循环。 react js

javascript - Firebase 服务错误 : Port 5000 is not open. 无法启动功能模拟器

firebase - Flutter 应用无法使用 google 登录

firebase - 如何使用 flutter 从错误对话框中导航

javascript - 使用 React 单击另一个表复选框来选择表的所有复选框

javascript - _react.default.memo 不是函数 | wrapWithConnect 问题

reactjs - 尽管我已经安装了 Redux 调试器,为什么这没有连接到 Flipper

reactjs - 如何为浏览器编译 typescript

javascript - 获取 TypeError : this. props.users.items 在 ReactJs 上未定义