Как получать push-уведомления FCM у сервисного работника в Chrome Extension - PullRequest
0 голосов
/ 09 февраля 2019

Я отправляю push-уведомление FCM из бэкэнда Firebase в расширение Chrome.Я вижу, что он успешно отображается в моем Chrome Extension, когда он в фокусе.Я хочу, чтобы оно показывалось, даже если расширение не в фокусе, но я не могу заставить работника службы, который должен обработать уведомление, даже запустить.

Я следовал Google tutorial настроить мой клиент JavaScript Chrome Extension.Я уже пробовал это решение , чтобы не включать полезную нагрузку "уведомления" в мое сообщение, и это решение , чтобы зарегистрировать работника вручную (хотя учебник не говорит ни о чем), но безрезультатно.

Мой сервисный работник firebase-messaging-sw.js выглядит так:

importScripts('https://www.gstatic.com/firebasejs/5.8.2/firebase.js');

var config = {
  ...
};
firebase.initializeApp(config);

const messaging = firebase.messaging();

messaging.setBackgroundMessageHandler(function(payload) {
  console.log('[firebase-messaging-sw.js] Received background message ', payload.data);
  var notificationTitle = 'Background Message Title';
  var notificationOptions = {
    body: 'Background Message body.',
    icon: '/firebase-logo.png'
  };

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

Это POST-запрос, который я использую для отправки уведомлений (очевидно, с правильными значениями SERVER_KEY и USER_TOKEN):

POST /fcm/send HTTP/1.1
Host: fcm.googleapis.com
Content-Type: application/json
Authorization: key=<SERVER_KEY>
Cache-Control: no-cache

{
    "data": {
        "title": "Firebase",
        "body": "Firebase is awesome",
        "click_action": "http://localhost:5000/",
        "icon": "http://localhost:5000/firebase-logo.png"
    },
    "to": "<USER_TOKEN>"
}

Как заставить работника службы получать push-уведомления и отображать их?

Заранее спасибо:)

...