Firebase Cloud Messaging click_action не работает - PullRequest
0 голосов
/ 10 октября 2019

Я отправляю уведомление с консоли Firebase в веб-приложение (Firebase). Когда я отправляю запрос POST от POSTMAN, я могу перейти к URL, когда нажимаю на уведомление. Но когда я отправляю его из консоли Firebase, я не могу открыть URL. Кроме того, мне нужно добавить свой логотип в качестве моего значка в уведомление.

POSTMAN

{
          "notification": {
          "title": "Push notification test",
          "body": "It works! ?",
       "icon": "https://soft-ing.info/img/firebase.png",
    "click_action": "https://google.com"
  },
  "to": "dLXCbmVCh5Y:APA91bGmFN7BUsKqwWFokyoBsoph6k4EhBQEflwJLFrPaUzTceYhAPYfFf8LqTRBVJGCA0gWS_0k0DUCeJBa7jdopIyjFQNprtp3lkQgLmUNRUibLIIMxAuBZeXuHTqaU-BA4QwbekN6"
}

Код файла рабочего сервиса

messaging.setBackgroundMessageHandler(function(payload) {
    console.log('[firebase-messaging-sw.js] Received background message ', payload);
    // Customize notification here
    const notificationTitle = payload.data.title;//'Background Message Title';
    const notificationOptions = {
        body: payload.data.body,//'Background Message body.',
        icon: payload.data.icon,
        image : payload.data.image,
        data:{
            time: new Date(Date.now()).toString(),
            click_action : payload.data.click_action
        }
    };

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

self.addEventListener("notificationclick", (event) => {
  event.waitUntil(async function () {
      const allClients = await clients.matchAll({
          includeUncontrolled: true
      });
      let chatClient;
      let appUrl = 'https://www.google.com';
      for (const client of allClients) {
      //here appUrl is the application url, we are checking it application tab is open
          if(client['url'].indexOf(appUrl) >= 0) 
          {
              client.focus();
              chatClient = client;
              break;
          }
      }
      if (!chatClient) {
          chatClient = await clients.openWindow(appUrl);
      }
  }());
});

1 Ответ

0 голосов
/ 10 октября 2019

Есть некоторые несоответствия в двух приведенных выше фрагментах. В вашем случае body: payload.data.body должно быть body: payload.notification.body, вы должны сделать то же самое для других мест в сервисном работнике, поскольку именно так вы отправляете запрос.

...