我有一个用离子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);