1

我今天遇到了一个意想不到的错误, react-native 59.8 only android issue

我正在使用 onesignal 并且一切正常(除非我的应用程序在前台)。

我已经初始化了我onesignalapp.js

OneSignal.init(ONE_SIGNAL_DRIVER);

我的听众在我的主页上。

useEffect(() => {
    OneSignal.addEventListener('received', onReceived);
    OneSignal.addEventListener('opened', onOpened);
    return () => {
      OneSignal.removeEventListener('received', onReceived);
      OneSignal.removeEventListener('opened', onOpened);
    };
  }, []);

现在,当我收到通知时,如果我的应用程序已关闭(不在前台)。它工作正常。首先我的包运行,然后一切都解决了。最后这些事件被触发并且我的打开被调用(如果我从通知中打开我的应用程序)。

但问题是当我的应用程序在foreground. 当我单击通知磁贴时,我会立即onOpened被调用,这是预期的行为,因为我的应用程序正在运行并且已经设置了侦听器。

但是会发生什么,当我单击通知时,我onOpened被调用,然后我react native bundle重新启动并导致我的应用程序重新启动,从一开始就完成所有工作(App.js)

所以问题是当我在我的应用程序处于前台或打开状态时打开通知时,react native bundle 会重新启动并重新启动我的应用程序。因此,我想在 myonOpened中做的事情,不要像重新启动之前发生的那样解决。现在我想要的是,以某种方式不让 onesignal 通知重新启动我的包或以某种方式延迟我的 onOpened 直到我的包重新启动。

该日志也可能有帮助,这是我在我的应用程序处于前台时单击通知时的日志,您可以看到我onOpened的被调用但随后我的应用程序重新启动,我也启用了 onesignal,但我不认为那是导致任何问题。

当我进行发布构建时也会发生这种情况。

clicked onOpened
Running application "Driver" with appParams: {"rootTag":1}. __DEV__ === true, development-level warning are ON, performance optimizations are OFF
logging.js:3 [CodePush] Checking for update.
logging.js:3 [CodePush] An update is available, but it is being ignored due to having been previously rolled back.
logging.js:3 [CodePush] App is up to date.
4

0 回答 0