在安卓上可以使用
//1.1 var backButtonPress = 0; $.back = function(event) { backButtonPress++; if(backButtonPress > 1) { plus.runtime.quit(); } else { plus.nativeUI.toast('再按一次退出應用'); } setTimeout(function() { backButtonPress = 0; }, 1000); return false; }; //1.2 mui.back = function() { var btn = ["確定", "取消"]; mui.confirm('確認關閉當前窗口?', 'Hello MUI', btn, function(e) { if(e.index == 0) { plus.runtime.quit(); } }); }
H5+官方文檔提供的plus.runtime.quit();對Android有效,但對iOS無效。但實際上,iOS系統原生提供了[[NSThread mainThread] exit];方法可以強制退出當前App,並且H5+支持調用iOS原生類的方法(通過plus.ios.importClass和invoke函數),於是就可以變相實現強制退出iOS的App了,代碼如下:
if (mui.os.ios) { const threadClass = plus.ios.importClass("NSThread"); const mainThread = plus.ios.invoke(threadClass, "mainThread"); plus.ios.invoke(mainThread, "exit"); } else if (mui.os.android) { plus.runtime.quit(); }
我自己項目所使用的
document.getElementById("tuic").addEventListener("tap", function(){ var old_back = mui.back; var btnArray = ['是', '否']; mui.confirm('您確定退出?', '', btnArray, function(e) { //當選擇是的時候執行 if(e.index == 0) { //判斷當前設備類型 if(mui.os.ios || mui.os.ipad){ plus.storage.clear(); const threadClass = plus.ios.importClass("NSThread"); const mainThread = plus.ios.invoke(threadClass, "mainThread"); plus.ios.invoke(mainThread, "exit"); }else if(mui.os.android) { plus.storage.clear(); // 獲取當前webview窗口對象 var curr = plus.webview.currentWebview(); //獲取所有已經打開的webview窗口 var wvs = plus.webview.all(); for(var i = 0, len = wvs.length; i < len; i++) { //關閉除當前頁面外的其他頁面 if(wvs[i].getURL() == curr.getURL()) //遇到當前頁跳過 continue; //非當前頁執行關閉 plus.webview.close(wvs[i]); } /*//打開login頁面 plus.webview.open('Signin.html','Signin.html');*/ //執行關閉當前頁面 curr.close(); old_back();//退出app }else{ //runtime 運行環境管理模塊執行退出 (一般運行不到這里) plus.runtime.quit(); } } }) })