appInit.js 3.4 KB
Newer Older
1
import uniStarterConfig from '@/uni-starter.config.js';
DCloud_JSON's avatar
DCloud_JSON 已提交
2
//应用初始化页
3 4 5
// #ifdef APP-PLUS
import checkUpdate from '@/uni_modules/uni-upgrade-center-app/utils/check-update';
import callCheckVersion from '@/uni_modules/uni-upgrade-center-app/utils/call-check-version';
DCloud_JSON's avatar
321  
DCloud_JSON 已提交
6
import interceptorChooseImage from '@/uni_modules/json-interceptor-chooseImage/js_sdk/main.js';
7
// #endif
8 9 10
export default function() {
	
	setTimeout(()=>{
11
		// uniStarterConfig挂载到getApp().
12
		const app = getApp({allowDefault: true})
13
		app.globalData.config = uniStarterConfig;
14
	},30)
15 16
	
	// 初始化appVersion(仅app生效)
DCloud_JSON's avatar
DCloud_JSON 已提交
17
	initAppVersion();
DCloud_JSON's avatar
321  
DCloud_JSON 已提交
18 19 20 21 22 23 24
	
	// #ifdef APP-PLUS
	// 实现,路由拦截。当应用无访问摄像头/相册权限,引导跳到设置界面
	interceptorChooseImage()
	// #endif

   
DCloud_JSON's avatar
DCloud_JSON 已提交
25
	//自定义路由拦截
DCloud_JSON's avatar
DCloud_JSON 已提交
26
	const {"router": {needLogin,login} } = uniStarterConfig //需要登录的页面
27
	let list = ["navigateTo", "redirectTo", "reLaunch", "switchTab"];
DCloud_JSON's avatar
DCloud_JSON 已提交
28
	list.forEach(item => { //用遍历的方式分别为,uni.navigateTo,uni.redirectTo,uni.reLaunch,uni.switchTab这4个路由方法添加拦截器
29 30
		uni.addInterceptor(item, {
			invoke(e) { // 调用前拦截
DCloud_JSON's avatar
DCloud_JSON 已提交
31
				//获取用户的token
32
				const token = uni.getStorageSync('uni_id_token')
DCloud_JSON's avatar
DCloud_JSON 已提交
33
				//获取当前页面路径(即url去掉"?"和"?"后的参数)
34
				const url = e.url.split('?')[0]
DCloud_JSON's avatar
DCloud_JSON 已提交
35
				//控制登录优先级
36 37 38 39 40 41
				let pages = getCurrentPages();
				if (
					url == '/pages/ucenter/login-page/index/index'
					&&
					pages[pages.length - 1].route.split('/')[2]!='login-page'
				) {
DCloud_JSON's avatar
DCloud_JSON 已提交
42
					//一键登录(univerify)、账号(username)、验证码登录(短信smsCode)
43
					if (login[0] == 'univerify') {
DCloud_JSON's avatar
DCloud_JSON 已提交
44
						if(e.url == url) { e.url += '?' } //添加参数之前判断是否带了`?`号如果没有就补上,因为当开发场景本身有参数的情况下是已经带了`?`号
45 46 47 48
						e.url += "univerify_first=true"
					} else if (login[0] == 'username') {
						e.url = "/pages/ucenter/login-page/pwd-login/pwd-login"
					}
DCloud_JSON's avatar
DCloud_JSON 已提交
49
				}else{
DCloud_JSON's avatar
DCloud_JSON 已提交
50
					//拦截强制登录页面
DCloud_JSON's avatar
DCloud_JSON 已提交
51 52
					if (needLogin.includes(url) && token == '') {
						uni.showToast({
DCloud_JSON's avatar
DCloud_JSON 已提交
53
							title: '请先登录',
DCloud_JSON's avatar
DCloud_JSON 已提交
54 55 56 57 58 59
							icon: 'none'
						})
						return uni.navigateTo({
							url: "/pages/ucenter/login-page/index/index"
						})
					}
60 61 62 63 64 65 66 67
				}
			},
			fail(err) { // 失败回调拦截 
				console.log(err);
			},
		})
	})
// #ifdef APP-PLUS
DCloud_JSON's avatar
DCloud_JSON 已提交
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
// 监听并提示设备网络状态变化
	uni.onNetworkStatusChange(res=> {
	    console.log(res.isConnected);
	    console.log(res.networkType);
		if(res.networkType!='none'){
			uni.showToast({
				title:'当前网络类型:'+res.networkType,
				icon:'none',
				duration:3000
			})
		}else{
			uni.showToast({
				title:'网络类型:'+res.networkType,
				icon:'none',
				duration:3000
			})
		}
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
	});
// #endif

}
/**
 * // 初始化appVersion
 */
function initAppVersion() {
	// #ifdef APP-PLUS
	let appid = plus.runtime.appid;
	plus.runtime.getProperty(appid, (wgtInfo) => {
		let appVersion = plus.runtime;
		let currentVersion = appVersion.versionCode > wgtInfo.versionCode ? appVersion : wgtInfo;
		getApp({
			allowDefault: true
		}).appVersion = {
			...currentVersion,
			appid,
			hasNew: false
		}
		// 检查更新小红点
		callCheckVersion().then(res => {
DCloud_JSON's avatar
DCloud_JSON 已提交
107
			// console.log('检查是否有可以更新的版本', res);
108 109 110 111 112 113 114 115 116 117 118
			if (res.result.code > 0) {
				// 有新版本
				getApp({
					allowDefault: true
				}).appVersion.hasNew = true;
			}
		})
	});
	// 检查更新
	checkUpdate();
	// #endif
DCloud_JSON's avatar
DCloud_JSON 已提交
119
}