在一个事件中在后台触发本机 Firebase 多个通知

Posted

技术标签:

【中文标题】在一个事件中在后台触发本机 Firebase 多个通知【英文标题】:React native firebase multiple notification triggered in background in one event 【发布时间】:2021-02-17 07:40:31 【问题描述】:

后台通知在一个事件中触发两次,不应该发生, 我无法检测到问题?我正在使用带有notifee的react native firebase进行通知..! 这是 useEffect 代码,我在其中取消订阅前台通知侦听器。

useEffect(() => 
    networkCall()
    fetchingUserData().then(() => 
        setIsLoading(false)
    )

    //
    // This is a function for receiving the notification message and displaying notification
    //
    async function onMessageReceivedFore(message: any) 
        onDisplayNotification(message);
        console.log('message received Foreground');
    
    async function onMessageReceivedBack(message: any) 
        onDisplayNotification(message);
        console.log('message received Background');
    
    //
    //This is for receiving notification onForeground
    //
    const unsubscribe = messaging().onMessage(onMessageReceivedFore);
    //
    //This is for receiving notification on background
    //
    messaging().setBackgroundMessageHandler(onMessageReceivedBack);

    return () => 
        console.log('component unmount');
        onNotificationInteraction()
        unsubscribe()
    

, [])

【问题讨论】:

从 firebase 触发时您会收到两个通知? 从 firebase 我得到了一个,但我猜它在我的代码中,这导致显示两个通知,我猜它是监听器的东西 打开你的androidManifest文件并告诉我com.dieam.reactnativepushnotification.notification_foreground元数据的值 我的清单中没有这样的标签 您使用哪个库进行推送通知? 【参考方案1】:

我同时使用了 onForeground() 通知和 onBackground() 通知, 当我删除 onBackground() 通知时,onForeground 方法也在后台触发,所以我在一个事件中收到了两个通知......这不应该是这种情况,但现在似乎可以工作......强>

useEffect(() => 
    networkCall()
    fetchingUserData().then(() => 
        setIsLoading(false)
    )

    //
    // This is a function for receiving the notification message and displaying notification
    //
    async function onMessageReceivedFore(message: any) 
        onDisplayNotification(message);
        console.log('message received Foreground');
    
    //
    //This is for receiving notification onForeground
    //
    const unsubscribe = messaging().onMessage(onMessageReceivedFore);

    return () => 
        console.log('component unmount');
        onNotificationInteraction()
        unsubscribe()
    

, [])

【讨论】:

以上是关于在一个事件中在后台触发本机 Firebase 多个通知的主要内容,如果未能解决你的问题,请参考以下文章

Web firebase.messaging().onMessage 未触发,但后台通知完美触发

如何在xcode中在后台重复触发进程

在 iOS 4.2.1 中在后台即时处理网络事件

如何在 iOS 4 中在后台播放多个音频文件?

在玩笑测试中在 Material UI Select 上触发 mousedown 事件时,我总是收到“anchorEl”警告

OnKeyPress、onKeyDown、onKeyUp 事件在 Android 下的 Firefox/Chrome 中在键入字母时未触发