没有实际状态更改时,按通知时AppState更改

时间:2019-07-24 13:05:19

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

我有一个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');
          }
     };

0 个答案:

没有答案
相关问题