首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >FCM通知在前台和后台接收两次

FCM通知在前台和后台接收两次
EN

Stack Overflow用户
提问于 2021-11-14 09:29:42
回答 1查看 388关注 0票数 0

我有反应项目,并将其与FCM 9集成,如下所示:

App.js

代码语言:javascript
运行
复制
import "./App.css";
import Fader from "./components/Fader";

import React, {useState} from "react";
import {onMessageListener} from "./firebaseInit";
import Notifications from "./components/Notifications/Notifications";
import ReactNotificationComponent from "./components/Notifications/ReactNotification";
// import { getMessaging, onMessage } from "firebase/messaging";
// import {initializeApp} from "firebase/app";   


function App() {
    const [show, setShow] = useState(false);
    const [notification, setNotification] = useState({title: "", body: ""});    
    

    onMessageListener()
        .then((payload) => {
          setShow(true);
          setNotification({
            title: payload.data.title,
            body: payload.data.body,
          });
          // console.log(payload);
        })
        .catch((err) => console.log("failed: ", err));

  

    return (
        <div className="App">
            {show ? (
                <ReactNotificationComponent
                    title={notification.title}
                    body={notification.body}
                />
            ) : (
                <></>
            )}
            <Notifications/>
            <Fader text="Hello React"></Fader>
        </div>
    );
}

export default App;

火线(前景)

代码语言:javascript
运行
复制
import {initializeApp} from 'firebase/app';
import {getMessaging, getToken, onMessage} from "firebase/messaging";

// For Firebase JS SDK v7.20.0 and later, measurementId is optional
const firebaseConfig = {
    apiKey: "mykey",
    authDomain: "mykey",
    projectId: "mykey",
    storageBucket: "mykey",
    messagingSenderId: "mykey",
    appId: "mykey",
    measurementId: "mykey"
};

const firebaseApp = initializeApp(firebaseConfig);

const messaging = getMessaging(firebaseApp);

const {REACT_APP_VAPID_KEY} = process.env;
const publicKey = REACT_APP_VAPID_KEY;

export const getTokens = async (setTokenFound) => {
    let currentToken = "";

    try {
        currentToken = await getToken(messaging, {vapidKey: publicKey});
        if (currentToken) {
            setTokenFound(true);
        } else {
            setTokenFound(false);
        }
    } catch (error) {
        console.log("An error occurred while retrieving token. ", error);
    }

    return currentToken;
};

export {
    messaging
};

export const onMessageListener = () =>
    new Promise((resolve) => {
        onMessage(messaging, (payload) => {
            console.log('Message received in foreground. ', payload);
            resolve(payload);
        });
    });

听众背景sw

代码语言:javascript
运行
复制
import { initializeApp } from "firebase/app";
import {getMessaging, onMessage} from "firebase/messaging";
import { onBackgroundMessage } from "firebase/messaging/sw";

const messaging = getMessaging();

onBackgroundMessage(messaging, (payload) => {
    console.log('[firebase-messaging-sw.js] Received background message ', payload);

    // Customize notification here
    // const notificationTitle = 'Background Message Title';
    const notificationOptions = {
        body: payload.data.body,
        icon: "/logo192.png",
    };

    return self.registration.showNotification(notificationOptions);

});

我已经用数据类型通知类型更改了我的有效负载,但是仍然没有什么变化,通知总是在后台或前台推送两次。有什么解决办法吗?

代码语言:javascript
运行
复制
{
        "data": {
            "title": "111",
            "body": "test push notif from dev.api hakim foreground"
        },
        "token": "mytoken"
    }
EN

回答 1

Stack Overflow用户

发布于 2022-10-06 02:57:22

我刚删除了self.registration

代码语言:javascript
运行
复制
 messaging.onBackgroundMessage(function(payload) {
  console.log( payload);
  const notificationTitle = payload.notification.title;
  const notificationOptions = {
    body: payload.notification.body    
  }; 
  //self.registration.showNotification(notificationTitle, notificationOptions);
});

现在我只得到一个

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69961779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档