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

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

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

  1. 点击一个通知会打开应用程序,getInitialNotification() 会给我点击的通知,所以我可以处理它
  2. 完全关闭应用程序然后单击其他通知之一时,应用程序会再次打开,但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(),所以在导航树的第一次渲染之后

【问题讨论】:

  • 运气好吗?我遇到了同样的问题

标签: android react-native firebase-cloud-messaging react-native-firebase


【解决方案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 种不同的场景。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多