我在click_action
函数中添加了push
参数。这是我的示例代码。
self.addEventListener("push", function(event) {
var title = event.data.json().notification.title;
var body = event.data.json().notification.body;
var icon = "/assets/img/logo.png";
var click_action =
"http://localhost:4200/#/jobs/notification/" +
event.data.json().data.job_no;
event.waitUntil(
self.registration.showNotification(title, {
body: body,
icon: icon,
click_action: click_action
})
);
});
要处理click
上的notification
,请定义一个notificationclick
事件处理程序。
例如:
self.addEventListener('notificationclick', function(event) {
var redirect_url = event.notification.data.click_action;
event.notification.close();
event.waitUntil(
clients
.matchAll({
type: "window"
})
.then(function(clientList) {
console.log(clientList);
for (var i = 0; i < clientList.length; i++) {
var client = clientList[i];
if (client.url === "/" && "focus" in client) {
return client.focus();
}
}
if (clients.openWindow) {
return clients.openWindow(redirect_url);
}
})
);
});
但是我无法在click_action
函数中获取notificationclick
参数。我想将推送通知重定向到click_action
中的Givent网址。
请帮助我。
答案 0 :(得分:0)
我已经解决了这个问题。我已在请求中发送了额外的参数。 这是我的示例代码:
self.addEventListener("push", function(event) {
var title = event.data.json().notification.title;
var body = event.data.json().notification.body;
var icon = "/assets/img/logo.png";
var click_action =
"http://localhost:4200/#/jobs/notification/" +
event.data.json().data.job_no;
event.waitUntil(
self.registration.showNotification(title, {
body: body,
icon: icon,
data: {
click_action
}
})
);
});
使用click_action
,下面是示例代码:
self.addEventListener('notificationclick', function(event) {
var redirect_url = event.notification.data.click_action;
event.notification.close();
event.waitUntil(
clients
.matchAll({
type: "window"
})
.then(function(clientList) {
console.log(clientList);
for (var i = 0; i < clientList.length; i++) {
var client = clientList[i];
if (client.url === "/" && "focus" in client) {
return client.focus();
}
}
if (clients.openWindow) {
return clients.openWindow(redirect_url);
}
})
);
});
答案 1 :(得分:0)
使用Google的firebase云消息传递对我来说,实施' notificationclick '无效。我改用了 fcmOptions ,因为该实现仅用于重定向并且可以从服务器控制链接。
阅读文档link显然可以使用 fcmOptions 满足您的需求,请注意,该链接必须是HTTPs链接。该文档声明使用 fcm_options ,可能已经过时了,因为它已将{strong> fcmOption
设置为renamed(对我来说)发送消息的方式(手动)是
var message = {
data: {
a:1
},
notification: {
title: 'title',
body: 'body'
},
webpush: {
fcmOptions: {
link: 'https://www.walcron.com'
}
},
token: VALID_TOKEN
};
对于正在使用此Firebase CM的任何人,祝您好运。通过服务人员,firebase-admin和此GCM文档花了几个小时。最后,代码很少,但是由于作用域很大,因此很难消化!