Angular - 服务工作者:如何从路由获取动态 ID 进入"Notificationclick"事件?



我在代码中放入了一些推送通知,以便在执行操作时通知某人。我在C#中用lib.net.webpush 3.1.0和.net 4.5.2做了后端。到目前为止,通知系统运行得很好,但有些事情我无法成功:在我的服务工作者文件(sw.js(中,使用Angular 9,我希望当有人收到通知时,当用户点击它时,他会重定向到发送通知的页面。

首先,我把它做成了这样(正如我在文档中所读到的(:

self.addEventListener('notificationclick', function (event) {
const urlToOpen = new URL(event.notification.data, self.location.origin).href;
event.notification.close();
event.waitUntil(clients.openWindow(urlToOpen));
});

但我总是被重定向到";localhost://4200"而不是完整的url。

为了测试,我做了这个:

self.addEventListener('notificationclick', function (event) {
const urlToOpen = new URL(self.location.origin + "/#/rdc/rapports/2015");
event.notification.close();
event.waitUntil(clients.openWindow(urlToOpen));
});

它奏效了。但是我无法获取动态URL。有人知道如何在这个文件中获取动态URL吗?或者如何重定向到发送通知的页面?我在这里也尝试了类似的操作:notificationclick事件服务工作者但是我真的不明白。谢谢

我只是成功地做到了。所以,对于和我一样的人来说:在服务工作者中,你无法访问DOM,我无法在代码中获得任何ID或任何路径。解决方案是,在我的C#代码中,添加一个";URL";属性和参数到my";发送通知";功能。然后,当我得到一个用户时,我可以瞄准他的ID,因为它已经在这里了。然后,在我的Angular代码中(在服务工作者文件中(,我只需要这样做(我将我的url存储在"数据"中(:

self.addEventListener('notificationclick', function (event) {   console.log("notif click event", event);
const urlToOpen = new URL(self.location.origin + event.notification.data);
event.notification.close();
event.waitUntil(clients.openWindow(urlToOpen)); });

然后,当我点击通知时,我会被重定向到所需的URL。

最新更新