firebase-messaging-sw.js 在 firebase 网络通知中的用途是什么?

新手上路,请多包涵

我在我的网站上为 firebase 推送通知配置了 Javascript API。一切正常,但我看到很多“背景消息”。我刚刚将 firebase-messaging-sw.js 文件放在我网站的目录中。

我不知道它的用途。我只是想知道它的作用。如果你看到下面的代码,你会发现我没有提供 messagingSenderId 这个文件仍然被执行。

所以我想知道的是:

没有身份证怎么办?

它有什么用?它是接收推送通知并在 onMessage 处理程序中处理它们的强制性文件吗?

我实际上应该把这个文件放在哪里(我当前的目录是: MY-SITE-DOMAIN/firebase-messaging-sw.js 但 firebase 通知配置在不同的目录中)?

这是代码:

 importScripts('https://www.gstatic.com/firebasejs/3.5.2/firebase-app.js');
importScripts('https://www.gstatic.com/firebasejs/3.5.2/firebase-messaging.js');

firebase.initializeApp({
  'messagingSenderId': 'YOUR-SENDER-ID'
});

const messaging = firebase.messaging();
messaging.setBackgroundMessageHandler(function(payload) {
 console.log('[firebase-messaging-sw.js] Received background message ', payload);
 const notificationTitle = 'Background Message from html';
  const notificationOptions = {
   body: 'Background Message body.',
   icon: '/firebase-logo.png'
 };

  return self.registration.showNotification(notificationTitle,
     notificationOptions);
});

原文件在 这里

原文由 Vikas Kumar 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 828
2 个回答

您可以使用下面的配置或仅使用 messagingSenderID。您可能已经在其他 javascript 中设置了配置,因此它不会引发任何错误。

 var config = {
        apiKey: "",
        authDomain: "",
        databaseURL: "",
        storageBucket: "",
        messagingSenderId: ""
    };

firebase-messaging-sw.js 是必须的,应该存在于主机根目录中。当浏览器未处于焦点或处于后台时,这是设置后台通知处理程序所必需的。

原文由 anshul jain 发布,翻译遵循 CC BY-SA 3.0 许可协议

默认情况下,firebase 将寻找 /firebase-messaging-sw.js,它应该包含 firebase 库和监听器。更多细节在这里: https://firebase.google.com/docs/cloud-messaging/js/receive

如果您想使用现有的服务人员,您可以使用 https://firebase.google.com/docs/reference/js/firebase.messaging.Messaging#useServiceWorker

像这样…

 navigator.serviceWorker.register('/service-worker.js').then(registration => {
  firebase.messaging().useServiceWorker(registration)
})

原文由 Phil Snell 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题