我有一个react本机应用程序,该应用程序使用Firebase通知进行推送通知。我已将回调设置为在收到通知时触发。由于该应用程序用于银行服务,因此我们具有非常厚的安全层。当应用程序在后台运行时收到通知并单击该通知时,我首先将用户转到验证图钉屏幕。但是,如果应用程序处于前台状态,则我不希望用户验证其密码(因为显然他目前正在使用该应用程序)。我遇到的问题是,如果应用程序处于前台状态并且单击了通知,则将首先触发handleAppStateChange(链接到App.js中的更改事件侦听器),然后在firebase notificationOpenedListener之前将appState更改为背景,然后当当前应用程序处于后台状态时,notificationOpenedListener会触发,这会将用户重定向到验证引脚屏幕,此后,handleAppStateChange侦听器再次触发,并将appState再次更改为前台。因此,应用程序位于前台,单击通知->状态更改为后台->通知侦听器->状态更改为前台。有谁知道如何克服/解决这个问题?
firebase通知单击了回调:
const checkIfOpenedFromNotification = async () => {
const notificationOpen = await firebase.notifications().getInitialNotification();
if (notificationOpen) {
const { data } = notificationOpen.notification;
store.dispatch(openedFromNotification(data));
}
};
我将appstate保存在redux中。
导航到通知详细信息屏幕:
const _navigateToOperation = (notification) => {
const { jwt, userHasCompletedOnboarding } = store.getState().auth;
const { currentAppState } = store.getState().utility;
const { data } = notification;
debugger;
if (currentAppState === 'active') {
redirectToOperation(data);
}
if (Object.keys(jwt).length > 0 && userHasCompletedOnboarding) {
RedirectToPreferredLogin({ callback: () => redirectToOperation(data) });
} else {
NavigationService.navigate('Login');
}
};