appInit.js 5.0 KB
Newer Older
L
23  
linju 已提交
1
import baseappConfig from '@/baseapp.config.js';
芊里 已提交
2
// #ifdef APP-PLUS
L
23  
linju 已提交
3
import checkUpdate from '@/uni_modules/uni-upgrade-center-app/utils/check-update';
芊里 已提交
4
import callCheckVersion from '@/uni_modules/uni-upgrade-center-app/utils/call-check-version';
L
23  
linju 已提交
5 6 7 8 9
// #endif
export default function() {

	// 初始化appVersion
	initAppVersion();
L
123  
linju 已提交
10 11

	//自定义路由拦截
L
123  
linju 已提交
12
	const {"router":{needLogin,login}} = baseappConfig //需要登陆的页面
L
123  
linju 已提交
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
	
	// changeAction(["navigateTo", "redirectTo", "reLaunch", "switchTab"], {
	// 	before_action: e => {
	// 		let token = uni.getStorageSync('uni-id-token')
	// 		let url = e.url.split('?')[0]
	// 		if (needLogin.includes(url) && token == '') {
	// 			console.log('该页面需要登陆,即将跳转到login页面');
	// 			uni.showToast({title:'该页面需要登陆,即将跳转到login页面',icon:'none'})
	// 			uni.navigateTo({
	// 				url:"/uni_modules/uni-login-page/pages/index/index"
	// 			})
	// 			return false
	// 		}
	// 		return true
	// 	}
	// })
	
	//uni.addInterceptor的写法
	
	let list = ["navigateTo", "redirectTo", "reLaunch", "switchTab"];
	list.forEach(item=>{
		uni.addInterceptor(item,{
			invoke(e){// 调用前拦截
L
23  
linju 已提交
36
				//console.log(e);
L
123  
linju 已提交
37
				const token = uni.getStorageSync('uni_id_token')
L
23  
linju 已提交
38
				// console.log(token);
L
123  
linju 已提交
39 40
				const url = e.url.split('?')[0]
				//拦截强制登陆页面
L
123  
linju 已提交
41 42 43 44 45 46 47 48
				if (needLogin.includes(url) && token == '') {
					console.log('该页面需要登陆,即将跳转到login页面');
					uni.showToast({title:'该页面需要登陆,即将跳转到login页面',icon:'none'})
					uni.navigateTo({
						url:"/uni_modules/uni-login-page/pages/index/index"
					})
					return false
				}
L
123  
linju 已提交
49 50 51 52
				//控制登陆优先级
				if(url=='/uni_modules/uni-login-page/pages/index/index'){
					//一键登录(univerify)、密码登陆(password)、快捷登录&验证码登陆(!univerify&password)
					if(login[0]=='univerify'){
L
23  
linju 已提交
53
						// console.log(e.url,url);
L
123  
linju 已提交
54 55 56
						if(e.url==url){ e.url+= '?' }
						e.url += "univerify_first=true"
					}else if(login[0]=='password'){
L
23  
linju 已提交
57
						e.url = "/uni_modules/uni-login-page/pages/pwd-login/pwd-login"
L
123  
linju 已提交
58 59 60 61
					}else{
						//默认即是
					}
				}
L
123  
linju 已提交
62
				return true
L
123  
linju 已提交
63 64 65 66
			},
			success(){	// 成功回调拦截 
				
			},
L
23  
linju 已提交
67 68
			fail(err){		// 失败回调拦截 
				console.log(err);
L
123  
linju 已提交
69 70
			},
			complete(e){	// 完成回调拦截 
L
23  
linju 已提交
71
				//console.log(e);
L
123  
linju 已提交
72 73 74
			},
			returnValue(){// 返回结果拦截 
				
L
123  
linju 已提交
75
			}
L
123  
linju 已提交
76
		})// 移除拦截器API removeInterceptor('request')
L
123  
linju 已提交
77
	})
芊里 已提交
78
	
L
123  
linju 已提交
79
	
L
123  
linju 已提交
80 81
	//提示网络变化
	eventListenerNetwork()
L
123  
linju 已提交
82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
	
	
	/*
		当某个权限调用失败
		1.先检测手机的该模块是否打开
		2.检测当前应用是否被授权了该模块对应的权限
		提示,并点击跳转到设置
	*/
   // #ifndef H5
   // changeAction('chooseImage', {
   // 	after_action: e => {
   // 		console.log('changeAction', e);
   // 		if(e.errCode === 11){
   // 			uni.showModal({
   // 				content: '无权限',
   // 				confirmText:"前往设置",
   // 				success(e) {
   // 					if(e.confirm){
   // 						permision.gotoAppPermissionSetting()
   // 					}
   // 				}
   // 			});
   // 		}
   // 	}
   // })
   // #endif
L
23  
linju 已提交
108 109 110 111 112 113 114 115
}
/**
 * // 初始化appVersion
 */
function initAppVersion() {
	// #ifdef APP-PLUS
	let appid = plus.runtime.appid;
	plus.runtime.getProperty(appid, (wgtInfo) => {
芊里 已提交
116
		let appVersion = plus.runtime;
L
23  
linju 已提交
117 118 119
		let currentVersion = appVersion.versionCode > wgtInfo.versionCode ? appVersion : wgtInfo;
		getApp({
			allowDefault: true
芊里 已提交
120
		}).appVersion = {
L
23  
linju 已提交
121 122 123
			...currentVersion,
			appid,
			hasNew:true
芊里 已提交
124 125 126 127 128 129 130 131 132 133
		}
		// 检查更新小红点
		callCheckVersion()
		.then(res=>{
			if(res.result.code>0){
				// 有新版本
				getApp({
					allowDefault: true
				}).appVersion.hasNew = true;
			}
L
23  
linju 已提交
134
		})
芊里 已提交
135 136 137
	});
	
	// 检查更新
L
23  
linju 已提交
138 139 140
	checkUpdate();
	// #endif
}
L
123  
linju 已提交
141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167

// 设备网络状态变化事件
function eventListenerNetwork () {
	uni.onNetworkStatusChange(function(res) {
		console.log(res.isConnected);
		console.log(res.networkType);
		if (!res.isConnected) {
			uni.showModal({
				content: "你未打开网络连接",
				confirmText: "前往打开",
				complete: (e) => {
					console.log(e);
					if (uni.getSystemInfoSync().platform == "ios") {
						plus.runtime.launchApplication({
							action: 'App-Prefs:root=WIFI'
						}, function(e) {
							console.log(JSON.stringify(e));
						});
					} else {
						var main = plus.android.runtimeMainActivity();
						var Intent = plus.android.importClass("android.content.Intent");
						var mIntent = new Intent('android.settings.DATA_ROAMING_SETTINGS');
						main.startActivity(mIntent);
					}
				}
			});
		}
芊里 已提交
168
	});
L
123  
linju 已提交
169 170 171 172 173 174
}


function changeAction(actions, {before_action,after_action}) {
	if(typeof actions == 'string'){
		actions = [actions]
L
23  
linju 已提交
175 176 177
	}
	if (!before_action) {
		before_action = () => true
L
123  
linju 已提交
178 179 180 181 182
	}
	actions.forEach(action=>{
		let old_action = uni[action]
		uni[action] = e => {
			if (before_action(e)) {
L
123  
linju 已提交
183
			//	console.log(after_action);
L
123  
linju 已提交
184 185 186 187 188 189 190 191 192 193 194 195
				if (after_action) {
					var compose = function(f, g) {
						return function(x) {
							return f(x,g(x));
						};
					};
					e.complete = compose(e.complete,after_action)
				}
				old_action(e)
			}
		}
	})
芊里 已提交
196
}