微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Angular - Service Worker:如何从路由获取动态 ID 到“Notificationclick”事件?

如何解决Angular - Service Worker:如何从路由获取动态 ID 到“Notificationclick”事件?

我在我的代码中放置了一些推送通知,以便在执行操作时通知某人。我在 C# 中使用 lib.net.webpush 3.1.0 和 .net 4.5.2 制作了后端。 到目前为止,通知系统运行良好,但有些事情我无法成功: 在我的 service worker 文件 (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 event service worker 但我真的不明白。 谢谢。

解决方法

我只是成功地做到了。 因此,对于与我处于同一情况的任何人:在 Service Worker 中,您无法访问 DOM,我无法获得任何 ID 或我试图在代码中瞄准的任何路径。 解决方案是,在我的 C# 代码中,将“URL”属性和参数添加到我的“SendNotification”函数中。然后,当我得到一个用户时,我可以定位他的 ID,因为它已经在这里了。 然后,在我的 Angular 代码中(在 service worker 文件中),我只需要这样做(我将我的 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。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。