我今天遇到了一个意想不到的错误,
react-native 59.8
only android issue
我正在使用 onesignal 并且一切正常(除非我的应用程序在前台)。
我已经初始化了我onesignal
的app.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.