如何在不点击通知的情况下从通知中获取数据(firebase 云消息传递和本机反应)

Posted

技术标签:

【中文标题】如何在不点击通知的情况下从通知中获取数据(firebase 云消息传递和本机反应)【英文标题】:How to get data from notification, without clicking on notifications (firebase cloud messagin and react native) 【发布时间】:2022-01-12 11:43:22 【问题描述】:

现在我可以在应用打开、最小化或关闭时处理消息,但是当我点击通知时。如果用户在没有通知的情况下登录应用程序,如何处理消息?

 useEffect(() => 
    messaging().setBackgroundMessageHandler(async remoteMessage => 
        handlerMessage(remoteMessage)
        setInitialRoute('Messenger')
    );
    messaging().onMessage(async remoteMessage => 
        handlerMessage(remoteMessage);
    );

    messaging()
        .getInitialNotification()
        .then(remoteMessage => 
            if (remoteMessage) 
                handlerMessage(remoteMessage);
                setInitialRoute('Messenger')
            
        );
, []);

【问题讨论】:

【参考方案1】:

首先,您的“setBackgroundMessageHandler”应该位于您的index.js 中,就像react-native-firebase docs 中提到的那样。你应该再看看那个。现在回答您的问题:您希望处理在您的应用处于后台或退出状态时发送的 fcmNotification 中的数据。您的 setBackgroundMessageHandler 不允许更新任何 UI(例如,通过 state ,如文档中所述)。但是它可以执行网络请求或更新本地存储。这就是你应该做的。当消息通过 backgroundHandler 到达时,更新您的 LocalStorage。在您的应用程序的下一次启动时,您可以检查 LocalStorage 是否包含来自 backgroundHander 处理的消息的数据。如果是,请对其进行处理并在之后将其删除,以便下一次 App 启动不会触发对旧数据的操作。如果不是,-好吧-什么都不做。

【讨论】:

以上是关于如何在不点击通知的情况下从通知中获取数据(firebase 云消息传递和本机反应)的主要内容,如果未能解决你的问题,请参考以下文章

如何在不与 MainActivity 交互的情况下从通知中打开片段页面?

如何在不关闭先前活动的情况下从通知中打开对话框样式的活动?

如何在不使用index.js文件中的触发器功能的情况下从Firestore数据库读取数据?

当应用程序处于状态后台或被杀死时,如何在不点击通知的情况下存储 iOS 远程通知?

如何在不触摸或点击文本字段的情况下从动态创建的 UITextField 获取文本(禁用用户交互)?

客户端如何在没有频繁 ajax 请求的情况下从服务器获取更新?