我已经在我的网站上为 firebase 推送通知配置了 Javascript API。一切正常,但我看到许多“后台消息”。我刚刚将 firebase-messaging-sw.js 文件放入我的网站目录中。
不知道有什么用。我只是想知道它的作用。如果您看到以下代码,您会发现我没有提供
messagingSenderId
,但该文件仍被执行。
所以我想知道的是:
没有ID怎么办?
它有什么用?它是接收推送通知并在
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);
});
原始文件在这里
默认情况下,firebase 将查找 /firebase-messaging-sw.js,其中应包含 firebase 库和侦听器。更多详细信息请参见:https://firebase.google.com/docs/cloud-messaging/js/receive
如果您想使用现有的 Service Worker,可以使用 https://firebase.google.com/docs/reference/js/firebase.messaging.Messaging#useServiceWorker
像这样...
navigator.serviceWorker.register('/service-worker.js').then(registration => {
firebase.messaging().useServiceWorker(registration)
})
您可以使用下面的配置或仅使用 messagesSenderID。 您可能已经在其他 JavaScript 中设置了配置,因此它不会抛出任何错误。
var config = {
apiKey: "",
authDomain: "",
databaseURL: "",
storageBucket: "",
messagingSenderId: ""
};
firebase-messaging-sw.js 是必须的,并且应该存在于主机根目录中。当浏览器未处于焦点或在后台时,这是设置后台通知处理程序所必需的。
在项目根目录创建空文件
firebase-messaging-sw.js
。
在 Apache Tomcat 中创建 /usr/share/apache-tomcat-9.0.30/webapps/ROOT
firebase-messaging-sw 文件的要点是设置一个 Firebase 将添加到客户端浏览器的 Service Worker。 Service Worker 将监听推送事件。如果 Service Worker 处于活动状态并正在运行,则在后台时,如果它收到新的推送事件,它将处理其中注册的代码,最终将变成用户将看到的推送通知。
我所知道的要了解有关实现推送通知的一般过程的更多信息的绝对最佳资源是:https://web-push-book.gauntface.com/
任何人读过这篇文章,他们都会知道发送推送通知的步骤,并且 Firebase 的抽象也很有意义。据我所知。