每次服务器重启时,都无法从FCM Admin(NodeJS)发送推送通知

时间:2018-01-22 14:43:27

标签: javascript node.js firebase firebase-cloud-messaging web-push

我已经设置了与Firebase Admin NodeJS SDK集成的NodeJS服务器端应用程序。客户端(Javascript)可以在执行以下步骤后接收推送通知:

  1. 在注册的ServiceWorker之后,客户端接收注册令牌requestPermission()然后getToken(),然后将其发送到服务器端
  2. 服务器端商店收到注册令牌到DB。
  3. 服务器端使用Firebase Admin NodeJS SDK向该注册令牌发送虚拟欢迎消息。 Google Chrome已成功收到推送通知。
  4. 现在,重启服务器端(forever restart bin/www等...)

    1. 问题1此处:我再次从服务器端发送虚拟消息。 GG Chrome中没有任何事情发生。
    2. 问题2此处:重复步骤1,我获得了全新注册令牌。一个老人变得无用。
    3. 我已阅读official documentation的许多页面,但基本不知道如何解决这个问题。

      我在第1步的代码:

      const self = this;
      if ('serviceWorker' in navigator) {
        if (!firebase.apps.length)
          firebase.initializeApp({
            apiKey: "AIzaSyDu888R1nyP_W_xFX7aATSB0U5irf79lrM",
            authDomain: "hungphongbk-1812.firebaseapp.com",
            databaseURL: "https://hungphongbk-1812.firebaseio.com",
            projectId: "hungphongbk-1812",
            storageBucket: "hungphongbk-1812.appspot.com",
            messagingSenderId: "1926697148"
          });
        const messaging = firebase.messaging();
        messaging.onMessage(function (payload) {
          console.log("Message received. ", payload);
          const {notification} = payload;
          new Notification(notification.title, {
            body: notification.body
          });
        });
        // window.addEventListener('load', async () => {
        (async function () {
          try {
            const registration = await navigator.serviceWorker.register('/sw.js')
            messaging.useServiceWorker(registration);
            await messaging.requestPermission();
            const token = await messaging.getToken();
            console.log(token);
            self.token = token;
            await post('/noti/register', {token});
          } catch (e) {
            alert(e.message);
          }
        })()
      }
      

0 个答案:

没有答案
相关问题