我已经设置了网络推送系统并且运行良好。
我遇到的问题是,在Mac上,如果用户打开Firefox但在收到通知时没有打开任何页面,则点击丢失。 一世 什么都不做。
这里是相关部分
self.addEventListener('push', function(event) {
var jsonObj = event.data.json();
var title = jsonObj.title;
event.waitUntil(
self.registration.showNotification(title, {
'body': jsonObj.body,
'icon': jsonObj.icon,
'href': jsonObj.href,
'tag': jsonObj.tag
}));
self.addEventListener('notificationclick', function(event) {
event.notification.close();
var href = jsonObj.href;
var tag = jsonObj.tag;
if (clients.openWindow) {
clients.openWindow(href);
}
/*
// This looks to see if the current is already open and
// focuses if it is
event.waitUntil(
clients.matchAll({
type: "window"
})
.then(function(clientList) {
for (var i = 0; i < clientList.length; i++) {
var client = clientList[i];
if (client.url == href && 'focus' in client)
return client.focus();
}
if (clients.openWindow) {
return clients.openWindow(href);
}
})
);
*/
});
});
答案 0 :(得分:4)
我建议你:
notificationclick
事件处理程序之外定义push
事件处理程序。您可以在jsonObj
的{{1}}参数中传递data
,这样您就可以在showNotification
处理程序的event
对象中访问它。您可以在此处查看示例:https://github.com/mozilla/wp-web-push/blob/master/wp-web-push/lib/js/sw.php。