Firebase: change the location of the service worker
我正在尝试使用 Firebase 消息传递(网络)。默认情况下,Firebase 会搜索包含 Service Worker 的文件"firebase-messaging-sw.js"。
Service Worker 脚本应该在应用程序的绝对路径上!例如:http://localhost/firebase-messaging-sw.js
如何更改此默认位置?!搜索官方文档我发现了这个方法:
那么,如何更改用于 Firebase 消息传递的 Service Worker 的位置?
正如迈克尔所说,使用的方法是
https://firebase.google.com/docs/reference/js/firebase.messaging.Messaging#useServiceWorker
Messaging 类是您调用
时返回的内容
所以样本将是:
1 2 3 4 5 6 | navigator.serviceWorker.register('./example/sw.js') .then((registration) => { messaging.useServiceWorker(registration); // Request permission and get token..... }); |
我刚刚在 Github 上的演示应用程序上尝试了这个,没有问题:https://github.com/firebase/quickstart-js/tree/master/messaging
您应该能够执行
我知道这是一个老问题,但由于
1 2 3 4 5 6 7 8 | const registration = await navigator.serviceWorker.ready; const messaging = firebase.messaging(); const token = await messaging.getToken({ serviceWorkerRegistration: registration, vapidKey:"", }); |
我认为是:
1 2 3 4 5 6 7 8 9 | const vapidKey = 'foo123...'; const serviceWorkerRegistration = await navigator .serviceWorker .register('/build/firebase-messaging-service-worker.js'); await getToken(messaging, { vapidKey, serviceWorkerRegistration, })... |
但请注意,如果您复制此代码,我认为范围会出错(因为路径,在我的示例中:
通过使用
-
这是一种从服务器获取有效负载的安全方式。
-
这是处理推送通知的最佳方式。