Xazn-app/App.vue

180 lines
5.6 KiB
Vue
Raw Normal View History

2025-05-22 16:37:43 +08:00
<script>
import store from '@/store';
export default {
//监听路由变化,实现路由拦截,实现全局路由守卫
// watch: {
// $route(to, from) {
// let token = uni.getStorageSync('token')
// // vuex存储token
// uni.$u.vuex('vuex_token', token);
// if (to.path === '/pages/tabBar/scene/index' && (token == '' || token == null)) {
// uni.showModal({
// title: "提示",
// content: '该功能需要登陆后使用,是否前往登录?',
// success: function(res) {
// if (res.confirm) {
// console.log('用户点击确定');
// self.$router.push('/pages/login/index');
// } else if (res.cancel) {
// console.log('用户点击取消');
// }
// }
// })
// // 如果需要登录验证且未登录,则跳转到登录页
// }
// if (to.path === '/pagesA/scene/alert/index' && (token == '' || token == null)) {
// // 如果需要登录验证且未登录,则跳转到登录页
// this.$router.push('/pages/login/index');
// }
// if (to.path === '/pagesA/scene/alert/index' && (token == '' || token == null)) {
// // 如果需要登录验证且未登录,则跳转到登录页
// this.$router.push('/pages/login/index');
// }
// }
// },
onLaunch: function() {
console.log('App Launch');
//判断用户是否首次打开
this.requestRecordPermission();
2025-05-22 16:37:43 +08:00
var isFirstOpen = uni.getStorageSync('isFirstOpen');
// 如果isFirstOpen不存在说明是首次打开系统
if (!isFirstOpen) {
// 执行首次打开系统的逻辑,比如显示弹窗
uni.reLaunch({
url: '/pagesB/login/firstOpen'
});
}
//else {
// // 如果不是首次打开系统,直接跳转到登录页
// uni.reLaunch({
// url: '/pages/login/index'
// });
// // uni.setStorageSync('isFirstOpen', false);
// }
},
onShow: function() {
this.$watch('$route', (to, from) => {
this.checkLoginStatus(to);
});
console.log('App Show');
// #ifndef H5 || APP-PLUS||MP-WEIXIN
//判断当前微信版本是否支持版本更新
if (uni.canIUse('getUpdateManager')) {
const updateManager = uni.getUpdateManager();
// 请求完新版本信息的回调
updateManager.onCheckForUpdate(function(res) {
if (res.hasUpdate) {
updateManager.onUpdateReady(function() {
uni.showModal({
title: '更新提示',
content: '新版本已经准备好,是否重启应用?',
success: function(res) {
// 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
if (res.confirm) {
updateManager.applyUpdate()
}
}
})
});
// 新的版本下载失败
updateManager.onUpdateFailed(function() {
uni.showModal({
title: '已经有新版本了哟~',
content: '新版本已经上线啦~,请您删除当前小程序,重新搜索打开哟~',
})
})
}
})
} else {
// 如果希望用户在最新版本的客户端上体验您的小程序,可以这样子提示
uni.showModal({
title: '提示',
content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。'
})
}
// #endif
},
methods: {
checkLoginStatus(route) {
let token = uni.getStorageSync('token');
if ((route.path === '/pages/tabBar/scene/index' || route.path === '/pages/tabBar/alert/index') && (token ==
'' || token == null)) {
2025-05-22 16:37:43 +08:00
uni.showModal({
title: this.$tt('common.tips'),
content: this.$tt('common.loginTips'),
cancelText: "取消",
confirmText: "确定",
success: (res) => {
if (res.confirm) {
console.log('用户点击确定');
uni.navigateTo({
url: '/pages/login/index'
});
} else if (res.cancel) {
console.log('用户点击取消');
}
}
});
}
},
// 新增:进入小程序时自动检测并申请录音权限
requestRecordPermission() {
// #ifdef APP-PLUS
if (uni.getSystemInfoSync().platform === 'android') {
plus.android.requestPermissions([
'android.permission.RECORD_AUDIO'
], function(resultObj) {
let result = 0;
for (let i = 0; i < resultObj.granted.length; i++) {
result = 1;
}
for (let i = 0; i < resultObj.deniedPresent.length; i++) {
result = 0;
}
for (let i = 0; i < resultObj.deniedAlways.length; i++) {
result = -1;
}
if (result !== 1) {
uni.showModal({
title: '提示',
content: '录音权限未开启,部分功能将无法使用,请前往设置开启权限。',
confirmText: '去设置',
success: (res) => {
if (res.confirm) {
plus.runtime.openApp({
action: 'android.settings.APPLICATION_DETAILS_SETTINGS'
});
}
}
});
}
});
} else if (uni.getSystemInfoSync().platform === 'ios') {
// iOS首次调用录音API会自动弹出授权无需手动申请
// 这里可以做一次录音尝试以触发授权弹窗
const recorder = uni.getRecorderManager();
recorder.start({ duration: 1000 });
recorder.onStart(() => {
recorder.stop();
});
recorder.onError(() => {
// 用户拒绝或未授权
uni.showModal({
title: '提示',
content: '录音权限未开启,部分功能将无法使用,请前往设置开启权限。'
});
});
}
// #endif
2025-05-22 16:37:43 +08:00
}
},
onHide: function() {
console.log('App Hide');
}
};
</script>
<style lang="scss">
@import '@/uni_modules/uview-ui/index.scss';
</style>