gpt4 book ai didi

notifications - PWA 关闭时如何接收点击的通知数据?

转载 作者:行者123 更新时间:2023-12-04 15:52:52 34 4
gpt4 key购买 nike

我的桌面通知在我的渐进式网络应用程序 (PWA) 中运行良好。打开 PWA 后,当我单击通知时,我能够接收通知的数据属性。当 PWA 关闭时,当我单击通知时,PWA 将打开,但我的 onclick 处理程序从未执行,我也看不到在启动 Web 应用程序时从通知接收数据的方法。

当 PWA 当前未运行时,如何接收通知数据属性?

我的 PWA 出现了 2 个通知,我想知道在我的 PWA 关闭时点击了哪个 PWA。看着 Notification API ,我看不到检查网络应用程序启动的方法。

这是我的代码:

if ('Notification' in window) {
const options = {
icon: 'https://i.imgur.com/l8qOen5.png',
image: 'https://i.imgur.com/l8qOen5.png',
requireInteraction: true,
};

if (Notification.permission === 'granted') {
const desktopNotification = new Notification('My Title', {
...options,
body: 'My body text',
data: 'A string I want to receive when PWA is opened',
tag: 'A unique identifier',
});

desktopNotification.onclick = (e) => {
// Not received when PWA is closed and then opened on click of notification
const data = e.currentTarget.data || {};
console.log('desktopNotification clicked!', e, data);
};
}
}

最佳答案

首先,即使您的 PWA 应用程序已关闭,您也需要运行 service-worker.js。如果您不熟悉 Service Worker API,请查看此处给出的非常好的示例:Introduction to Push Notifications .

要从技术层面回答您的问题,您需要订阅service-worker.js内部notificationclick事件。还有一些其他事件可用,例如:notificationclose

这是 serviceworker.js 中需要包含的内容的简短示例:

self.addEventListener('notificationclick', function(e) {
var notification = e.notification;
var primaryKey = notification.data.primaryKey;
var action = e.action;

if (action === 'close') {
notification.close();
} else {
clients.openWindow('http://www.example.com');
notification.close();
}
});

关于notifications - PWA 关闭时如何接收点击的通知数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53125701/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com