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

在 click_action 触发后,在 Service Worker 中捕获 FCM 通知消息

如何解决在 click_action 触发后,在 Service Worker 中捕获 FCM 通知消息

我面临的通知消息的问题是,只要定义的 click_action 的完整 URL 与任何打开的选项卡不匹配,就会打开一个新选项卡。

假设 click_action 等于 mydomain.com 并且有一个 URL 为 mydomain.com/anyroute 的已打开标签。将打开一个新选项卡,因为 URL 不匹配。但我希望关注已经打开的标签,而不是打开新标签

用户点击消息后,Service Worker 能否捕捉到通知消息?还有其他可能吗?

编辑:到目前为止,服务工作者的事件如 onBackgroundMessagenotificationclick 没有通过,因为推送通知是 if type notification_message

解决方法

您可以像解释的here一样使用on

messaging.onBackgroundMessage((payload) => {
  console.log(
    "[firebase-messaging-sw.js] Received background message ",payload
  );
  // Customize notification here
  const notificationTitle = "Background Message Title";
  const notificationOptions = {
    body: "Background Message body.",icon: "/firebase-logo.png",};

  // Loop trough all clients controled by the SW
  self.clients.matchAll(options).then(function (clients) {
    // Let's see if we already have a chat window open:
    const url = new URL(client.url);

    if (url.pathname == "/custom_url/") {
      // Excellent,let's use it!
      client.focus();
    }

    // do something with your clients list
  });

  self.registration.showNotification(notificationTitle,notificationOptions);
});


您可以在其中使用 self.clients 来循环浏览由软件控制的应用程序的所有选项卡/客户端。如果网址/补丁匹配,您可以关注特定客户端。

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