Веб-уведомление FCM не может щелкнуть ссылку уведомления - PullRequest
0 голосов
/ 03 апреля 2019

Я добавил click_action параметры в функцию push. Вот мой пример кода.

self.addEventListener("push", function(event) {
  var title = event.data.json().notification.title;
  var body = event.data.json().notification.body;
  var icon = "/assets/img/logo.png";
  var click_action =
    "http://localhost:4200/#/jobs/notification/" +
    event.data.json().data.job_no;
  event.waitUntil(
    self.registration.showNotification(title, {
      body: body,
      icon: icon,
      click_action: click_action
    })
  );
});

Для обработки click в notification, определен обработчик событий notificationclick.

Например:

self.addEventListener('notificationclick', function(event) {
  var redirect_url = event.notification.data.click_action;
  event.notification.close();
  event.waitUntil(
    clients
      .matchAll({
        type: "window"
      })
      .then(function(clientList) {
        console.log(clientList);
        for (var i = 0; i < clientList.length; i++) {
          var client = clientList[i];
          if (client.url === "/" && "focus" in client) {
            return client.focus();
          }
        }
        if (clients.openWindow) {
          return clients.openWindow(redirect_url);
        }
      })
  );
});

Но я не могу получить параметр click_action в функции notificationclick. Я хочу перенаправить push-уведомление на URL в click_action.

Пожалуйста, помогите мне.

1 Ответ

1 голос
/ 04 апреля 2019

Я решил эту проблему.Я отправил дополнительный параметр в запросе.Вот мой пример кода:

self.addEventListener("push", function(event) {
  var title = event.data.json().notification.title;
  var body = event.data.json().notification.body;
  var icon = "/assets/img/logo.png";
  var click_action =
    "http://localhost:4200/#/jobs/notification/" +
    event.data.json().data.job_no;
  event.waitUntil(
    self.registration.showNotification(title, {
      body: body,
      icon: icon,
      data: {
        click_action
      }
    })
  );
});

И с использованием click_action, а вот пример кода:

self.addEventListener('notificationclick', function(event) {
  var redirect_url = event.notification.data.click_action;
  event.notification.close();
  event.waitUntil(
    clients
      .matchAll({
        type: "window"
      })
      .then(function(clientList) {
        console.log(clientList);
        for (var i = 0; i < clientList.length; i++) {
          var client = clientList[i];
          if (client.url === "/" && "focus" in client) {
            return client.focus();
          }
        }
        if (clients.openWindow) {
          return clients.openWindow(redirect_url);
        }
      })
  );
});
...