Не удается получить тестовое сообщение с помощью облачных сообщений firebase - PullRequest
0 голосов
/ 05 августа 2020

Я использую облачный обмен сообщениями firebase для реализации уведомлений pu sh для моего веб-сайта. Маркер регистрации создается, когда пользователь регистрируется, и сохраняется как поле пользовательского документа в firestore. До этого момента программа работала должным образом (токен был сгенерирован и сохранен в базе данных). Однако когда я попытался отправить тестовое сообщение на свое устройство с помощью регистрационного токена на консоли firebase, я не получил никакого уведомления. Метод onMessage () не запускался, даже когда у меня было приложение на переднем плане, так как на консоли ничего не выводилось. Мне интересно, что я пропустил.

React component

componentDidMount() {
   firebase.auth().onAuthStateChanged((user) => {
    firebase.firestore().collection("users").doc(user.uid).get()
    .then((doc) => {
      if (!doc.exists) {
        const messaging = firebase.messaging();
        messaging.usePublicVapidKey("my app's key");
        messaging.requestPermission()
        .then(() => {
          messaging.getToken()
          .then((currentToken) => {
            if (currentToken) {
             firebase.firestore().collection("users").doc(user.uid).set({
                name: user.displayName,
                email: user.email,
                token: currentToken
             })
            }
          })
        })
      }
    })
  })
}

firebase-messaging-sw. js

importScripts('https://www.gstatic.com/firebasejs/7.11.0/firebase-app.js');
importScripts('https://www.gstatic.com/firebasejs/7.11.0/firebase-messaging.js');

const firebaseConfig = {
  apiKey: ...,
  authDomain: ...,
  databaseURL: ...,
  projectId: ...,
  storageBucket: ...,
  messagingSenderId: ...,
  appId: ...,
  measurementId: ...
};
 
firebase.initializeApp(firebaseConfig);

const messaging = firebase.messaging();
messaging.usePublicVapidKey(...);
messaging.onMessage((payload) => {
  console.log("Message received: " + payload);
})

Я также включаю firebase-messaging-sw. js в index. html.

index. html

<script src="firebase-messaging-sw.js"></script>
...