无法使用Firebase云消息传递接收测试消息

时间:2020-08-05 19:29:59

标签: firebase firebase-cloud-messaging

我使用Firebase云消息传递为我的网站实施推送通知。用户注册时创建注册令牌,并将其作为用户文档的字段存储在Firestore中。到目前为止,该程序按预期工作(生成了令牌并将其存储在数据库中)。但是,当我尝试使用Firebase控制台上的注册令牌向设备发送测试消息时,没有收到任何通知。即使在前台放置应用程序时,也不会触发onMessage()方法,因为控制台上没有打印出任何内容。我想知道我错过了什么。

反应组件

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);
})

我还在index.html中包括了firebase-messaging-sw.js。

index.html

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

0 个答案:

没有答案