# 退出应用
注意
routerErrorEach
请保证有错误信息打印,否则再出错误的情况下很难排除。
v2.0.0起完全支持APP
端拦截。包括安卓端在首页按多次返回。目前可能需要开发者自行处理,直接贴出代码:
import {
RouterMount,
createRouter,
runtimeQuit
} from './dist/uni-simple-router.js';
const router = createRouter({
platform: process.env.VUE_APP_PLATFORM,
routerErrorEach:({type,level,...args})=>{
console.log({type,level,...args})
// #ifdef APP-PLUS
if(type===3){
router.$lockStatus=false;
runtimeQuit();
}
// #endif
},
routes: [...ROUTES]
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
前往查看 routerErrorEach 参数说明。当然你也可以自定义退出app提示!只需要把 runtimeQuit 函数去除并换成自己的ui即可。
# 简易自定义
const router = createRouter({
platform: process.env.VUE_APP_PLATFORM,
routerErrorEach:({type,level,...args})=>{
console.log({type,level,...args})
// #ifdef APP-PLUS
if(type===3){
router.$lockStatus=false;
uni.showModal({
title: '提示',
content: '您确定要退出应用吗?',
success: function (res) {
if (res.confirm) {
plus.runtime.quit();
}
}
});
}
// #endif
},
routes: [...ROUTES]
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 更精准的定位
const router = createRouter({
platform: process.env.VUE_APP_PLATFORM,
routerErrorEach:({type,level,...args})=>{
console.log({type,level,...args})
// #ifdef APP-PLUS
if(type===3){
router.$lockStatus=false;
const pages=getCurrentPages();
const currentPage=pages[pages.length-1];
if(level==1&&args.uniActualData.from==='backbutton'){
if(currentPage.$page.meta.isQuit){
runtimeQuit();
}
}
}
// #endif
},
routes: [...ROUTES]
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 调用页面方法
<script>
export default {
methods: {
runtimeQuit(){
uni.showModal({
title: '提示',
content: '您确定要退出应用吗?',
success: function (res) {
if (res.confirm) {
plus.runtime.quit();
}
}
});
},
}
}
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// router.js
const router = createRouter({
platform: process.env.VUE_APP_PLATFORM,
routerErrorEach:({type,level,...args})=>{
console.log({type,level,...args})
// #ifdef APP-PLUS
if(type===3){
router.$lockStatus=false;
const pages=getCurrentPages();
const {$vm}=pages[pages.length-1];
$vm.runtimeQuit();
}
// #endif
},
routes: [...ROUTES]
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
这里有很多的方式让你选择。如果你想让退出UI更漂亮或者有更多业务逻辑处理,选择调用页面方法方式处理是你不二的选择。