浏览器推送通知仅在登录时 |火力基地

时间:2020-12-28 12:41:53

标签: javascript reactjs firebase firebase-cloud-messaging

我在 React 项目中实施 Firebase 浏览器推送通知, 但我希望浏览器推送通知仅在用户登录到我的网站或应用程序时出现。 我的要求是:

  1. 登录的用户发送浏览器通知,包括他们的姓名和其他一些详细信息。
  2. 对于未登录的用户,应该向他们发送一条通用消息。

我的 service-worker 文件和推送通知文件如下:

推送通知.js

    import firebase from 'firebase';

    export const initializeFirebase = () => {
      firebase.initializeApp({
      apiKey: "xxx",
      authDomain: "xxx",
      projectId: "xxx",
      storageBucket: "xxx",
      messagingSenderId: "xxx",
      appId: "xxx",
      measurementId: "xxx"
    });
     const messaging = firebase.messaging();
     messaging.onMessage((payload) => {
     console.log("Loading...",payload);
     alert("Firebase is awesome");
    });

    }

    export const askForPermissioToReceiveNotifications = async () => {
     try {
       const messaging = firebase.messaging();
       await messaging.requestPermission();
       const token = await messaging.getToken();
       console.log('token: ', token);
       return token;
      } catch (error) {
       console.error(error);
     }
    }

   export const getMessagingToken = async () => {
     try {
       const messaging = firebase.messaging();
       const token = await messaging.getToken({vapidKey:   
   "xxx"});
      return token;
    } catch (error) {
      console.error(error);
    }
    }

firebase-messaging-sw.js

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

firebase.initializeApp({
    apiKey: "xxx",
    authDomain: "xxx",
    projectId: "xxx",
    storageBucket: "xxx",
    messagingSenderId: "xxx",
    appId: "xxx",
    measurementId: "xxx"
});

const messaging = firebase.messaging();
console.log(messaging);

一切正常,但我只想将通知发送给当前已登录网站的用户。 以及对未登录应用程序的用户的一些通知。 我无法在 firebase 官方网站上找到任何相同的资源。

如果您分享任何相关资源或回答完成要求的方法,将会有很大帮助。
提前致谢!
如有任何疑问,请随时询问。

0 个答案:

没有答案