通过按下通知打开应用程序时,后按钮处理程序未被注册



我有一个用离子V1和AngularJS编写的应用程序。该应用程序正在使用$ionicPlatform.registerBackButtonAction处理设备的后退按钮操作。通常,当通常使用该应用程序时,一切都很好。当应用通知打开应用程序时,问题就开始了。

当应用程序不在后台并通过单击"推送通知"打开时,"返回"按钮处理程序未被注册,并且物理返回按钮将我扔出了应用程序。如果我在屏幕上单击任何地方(单击,而不是滚动(,则注册触摸事件,一切正常。

启动推送通知事件后,我尝试在多个位置注册该事件。我尝试在屏幕上的空白空间上模拟触摸事件。我尝试派遣简历事件,以模拟暂停状态的回报。我尝试在页面加载后尝试重新加载页面编程。似乎没有任何作用。

是我的 $ionicPlatform.registerBackButtonAction事件处理程序,该事件处理程序正在app.run中注册:

$ionicPlatform.registerBackButtonAction(function(e) {
            e.preventDefault();
            function showConfirm() {
                var confirmPopup = $ionicPopup.show({
                    title : 'Close',
                    template : '<div>Do you want to close the app?</div>',
                    buttons : [
                        {
                            text : '<b>Cancel</b>'
                        }, 
                        {
                            text : '<b>Approve</b>',
                            type: 'button-positive',
                            onTap : function() {
                                ionic.Platform.exitApp();
                            }
                        }
                    ]
                });
            };
            // Is there a page to go back to?
            if ($ionicHistory.backView()) {
                // Go back in history
                if($rootScope.pushPressed2) {
                    $location.path('/app/home').replace();
                }
                else {
                    $rootScope.backButtonPressed = true;
                    $ionicHistory.backView().go();
                }
            } 
            else {
                if($rootScope.pushPressed2) {
                    $location.path('/app/home').replace();
                }
                else {
                    showConfirm();
                }
            }
            return false;
        }, 101);
    $ionicPlatform.registerBackButtonAction(function(event) 
    {
       if ($ionicHistory.currentStateName() === "home"   ) 
    { 
           $cordovaDialogs.confirm('Are You Sure You Want to Exit?', 'AppName', ['Cancel','OK'])
        .then(function(buttonIndex) {
          // no button = 0 'OK' = 1 'Cancel' = 2
          var btnIndex = buttonIndex;
          if(buttonIndex==2)
          {
              ionic.Platform.exitApp();
          }
        });
        } 
else
        {
            if($ionicHistory.currentStateName() === "login" )
            {
                ionic.Platform.exitApp();
            }
            else
            {
                $ionicHistory.goBack();
            }
        }

      }, 100);

最新更新