我正在使用FCM发送Web通知。我收到此警告,点击通知不会给予出通常的结果(打开通知url)。这是Service-Worker代码
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': '<my senderid>'
});
const messaging = firebase.messaging();
messaging.setBackgroundMessageHandler(function(payload) {
self.addEventListener('notificationclick', function(event) {
event.notification.close();
var promise = new Promise(function(resolve) {
setTimeout(resolve, 1000);
}).then(function() {
return clients.openWindow(payload.data.locator);
});
event.waitUntil(promise);
});
var notificationTitle = payload.data.title;
var notificationOptions = {
body: payload.data.body,
icon: payload.data.icon
};
return self.registration.showNotification(notificationTitle,
notificationOptions);
});
firebase-messaging-sw.js:108 Event handler of 'notificationclick' event must be added on the initial evaluation of worker script.
这是警告消息,108引用此行self.addEventListener('notificationclick', function(event) {
这是在Chrome版本55。在firefox上,没有任何问题,运行完全正常。先谢谢你了。
3条答案
按热度按时间yhxst69z1#
你应该搬走
函数外
以便只添加EventListener一次。
您的完整代码应该如下所示
z4bn682m2#
在messaging.setBackgroundMessageHandler之外使用self.addEventListener,并使用notificationOptions的data属性
下面是完整的***firebase-messaging-sw.js***文件,以便更好地理解
nhjlsmyf3#
就这么简单