用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