React Native Firebase 的 getInitialNotification 仅针对第一次推送通知返回通知对象

Posted

技术标签:

【中文标题】React Native Firebase 的 getInitialNotification 仅针对第一次推送通知返回通知对象【英文标题】:getInitialNotification of React Native Firebase returns notification object only for first push notification 【发布时间】:2020-11-12 03:01:24 【问题描述】:

@react-native-firebase/messaging 有一个奇怪的问题。我最近更新到 v6,在 ios 上一切正常,在 android 上一切正常,除了一件事。

当收到多个推送通知时,情况如下:

    点击一个通知会打开应用程序,getInitialNotification() 会给我点击的通知,所以我可以处理它 完全关闭应用程序然后单击其他通知之一时,应用程序会再次打开,但getInitialNotification() 返回null

似乎用一个通知打开应用程序也会吃掉所有其他通知的数据。 我想我做错了什么,但我不知道在哪里可以搜索问题。

关于设置的一些信息

我删除了 react-native-splash-screen(没有改变任何东西) 我使用的是最新版本的 @react-native-firebase/app 和 /messaging(“@react-native-firebase/app”:“8.2.0”、“@react-native-firebase/messaging” : "7.4.2") React Native 的版本为 0.62.2 应用在useEffect 中调用getInitialNotification(),所以在导航树的第一次渲染之后

【问题讨论】:

运气好吗?我遇到了同样的问题 【参考方案1】:
messaging().onNotificationOpenedApp(remoteMessage => 
      console.log(
        'Notification caused app to open from background state:',
        remoteMessage.notification,
      );
      navigation.navigate(remoteMessage.data.type);
    );

添加此监听器

https://rnfirebase.io/messaging/notifications

【讨论】:

感谢您的回复。我已经实现了。但是,它是在通过推送通知启动应用程序时明确显示的,并且仅在应用程序已经运行时才调用 onNotificationOpenedApp。我弄错了吗?还是可能是时间问题? 是的,有时会发生,当应用程序已经在后台并从推送通知打开时,这需要时间。就我而言,当我按下通知时,后台应用程序位于不同的堆栈和选项卡中,onNotification 我将重定向到其他深度嵌套的堆栈。所以有时需要时间。但在调试模式下不在 APK 构建中。在 APK 中,它需要一小部分时间,具体取决于网络负载。但大多数情况下它会顺利重定向( APK Build )。因此,如果您在调试模式/连接到 npm 的设备下进行测试,这将需要时间。此外,我还必须在 Notification 上管理 15 种不同的场景。

以上是关于React Native Firebase 的 getInitialNotification 仅针对第一次推送通知返回通知对象的主要内容,如果未能解决你的问题,请参考以下文章

用 react-native-firebase 编译 react-native

哪个 Firebase javascript 包应该与 React Native 一起使用?常规的“Firebase Web SDK”还是“react-native-firebase”?

使用 react-native-firebase 在 React Native 上自定义通知

react native [[DEFAULT]] firebaseapp 未初始化 react-native-firebase

在 react-native 和 firebase 3.1 中登录 Facebook

Firebase 和 react-native 集成