我正在尝试显示通知,并在单击通知时执行一些操作。显示的部分工作正常,正在从服务器接收数据,但是,单击通知的功能不起作用,我已经完成了文档说的所有内容,在网络上发现的内容以及此处指向的所有内容我已实现的功能,但似乎无法正常工作。我已经进行了虚拟操作,只要不从服务器加载数据,就会触发单击,否则,数据就不会触发。
谁能告诉我我做错了什么?我会非常感谢您的帮助,我已经两天了。
self.addEventListener('push', (e) => {
let notification = e.data.json();
const title = 'My app ' + notification.title;
const options = {
body: notification.msg,
actions: [
{ action: 'yes', title: 'Aprobar' },
{ action: 'no', title: 'Rechazar' }
]
};
self.registration.showNotification(title, options);
}); //to show the notification with server info
self.addEventListener('notificationclick', function (event) {
console.log(event);
var noti = event.notification.data;
let r = event.notification.data.json();
console.log(noti); },
false); //handling the click
我还尝试了使用notifyclose来查看它是否捕获了点击,但它也不起作用。
重要的是,它不显示任何错误或警告,它可以简单地执行任何操作。
答案 0 :(得分:0)
我找到了解决方案!在研究了代码并阅读了一些其他文档之后,事实证明,如果我在服务器上的服务是线程类型,那么我的js中就必须等待答案。如果有人需要。
let notification = '';
self.addEventListener('push', (e) => {
notification = e.data.json();
const title = 'My app' + notification.title;
const options = {
body: notification.msg,
actions: [
{ action: 'yes', title: 'Aprobar' },
{ action: 'no', title: 'Rechazar' }
]
};
e.waitUntil(self.registration.showNotification(title, options)); }); //waitUntil to show the notification
self.addEventListener('notificationclick', function (event) {
console.log('[Service Worker] Notification click Received.');
event.notification.close();
let response = event.action;
event.waitUntil(
fetch(`api/authorizations/processor?uuid=${notification.uuid}&response=${response}&account=${notification.user}`,
{
method: 'GET',
mode: 'cors',
cache: 'default'
}).then((result) => {
if (!result.ok)
throw result;
return result.json();
}).then(function (data) {
console.log(data);
}).catch(function (error) {
console.log(errow);
})
); }); // waitUntil to expect a action