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);
Как обслуживать рабочую базу данных изменений в базе данных?