用ionic框架开发过app的朋友都知道,ionic打包的安卓工程,物理返键的处理在真机中是逐一返回之前访问过的页面,有可能是父页面到子页面,也有可能是子页面到父页面,这样造成的用户体验十分不好,幸好ionic框架支持注册安卓物理返回键的功能,具体处理方法为在app.js的.run函数中注册$ionicPlatform.registerBackButtonAction
,
贴代码:
/**
* 注册安卓返回键的处理
* @author hz
* @since 2017/8/11
* */
$ionicPlatform.registerBackButtonAction(function (e) {
//阻止默认的处理方法
e.preventDefault();
//声明退出提示函数
function showConfirm() {
var confirmPopup = $ionicPopup.confirm({
title: '<strong>退出应用?</strong>',
template: '你确定要退出应用吗?',
okText: '退出',
cancelText: '取消'
});
confirmPopup.then(function (res) {
if (res) {
ionic.Platform.exitApp();
}
else {
// Don't close
}
});
}
// Is there a page to go back to?
if ($location.path() == '/mainMap' ) {
showConfirm();
} else if ($ionicHistory.backView()) {
$ionicHistory.goBack();
} else {
// This is the last page: Show confirmation popup
showConfirm();
}
return false;
}, 101);
处理逻辑为到了指定页面:$location.path() == '/mainMap'
按返回键就提示是否退出应用,一般是登录后的首页;如果$ionicHistory
有返回的页面,按返回键就直接返回$ionicHistory.goBack()
;其它情况也是提示是否退出应用,一般是登录页面。
最后别忘了在.run函数中添加参数:.run(function($ionicPlatform, $ionicHistory, $ionicPopup, $location){})
,不然该函数不起作用。
参考资料:http://blog.csdn.net/pxc932422338/article/details/44916897