Firebase: изменение местоположения обслуживающего работника

Я пытаюсь использовать Firebase messaging (web). Firebase по умолчанию ищет файл "firebase-messaging-sw.js", который содержит обслуживающего работника.

Ожидается, что сервисный работник script будет на абсолютном пути к приложению! Например: http://localhost/firebase-messaging-sw.js

Как изменить это местоположение по умолчанию?! Поиск в официальных документах нашел этот метод: useServiceWorker, который принимает регистрацию рабочего пользователя, но пытается его использовать. Я получаю сообщение об ошибке, что этот метод даже не существует!

Итак, Как изменить расположение обслуживающего сотрудника для обмена сообщениями firebase?

Ответы

Ответ 1

Как сказал Майкл, метод для использования - это useServiceWorker(<registration>).

https://firebase.google.com/docs/reference/js/firebase.messaging.Messaging#useServiceWorker

Класс Messaging - это то, что возвращается, когда вы вызываете firebase.message().

Таким образом, образец будет:

navigator.serviceWorker.register('./example/sw.js')
.then((registration) => {
  messaging.useServiceWorker(registration);

  // Request permission and get token.....
});

Я только что попробовал это в демонстрационном приложении на Github без проблем: https://github.com/firebase/quickstart-js/tree/master/messaging

Ответ 2

Вы должны иметь возможность сделать firebase.messaging().useServiceWorker(registration) и пройти регистрацию существующего сервисного работника. Обратите внимание, что вы должны сделать это как можно раньше до любых вызовов, например. getToken() или onMessage().

Ответ 3

Используя useServiceWorker(registration), вы можете использовать событие notificationonclick для push-сообщений Firebase через выход из рабочего.

firebase.messaging().useServiceWorker(registration) работает и решает мою проблему, но имейте в виду, что я не знаю, если:

  • это безопасный способ , чтобы получить полезную нагрузку с сервера.

  • Это лучший способ обработки push-уведомлений.

Ответ 4

Этот метод получает сообщение также для изменения базы данных? Пример: const database = firebase.database().ref().child("notify"); database.useServiceWorker(registration); const database = firebase.database().ref().child("notify"); database.useServiceWorker(registration); Как обслуживать рабочую базу данных изменений в базе данных?