appInit.js 4.2 KB
Newer Older
1 2 3 4 5
import uniStarterConfig from '@/uni-starter.config.js';
//应用初始化页
// #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';
6

DCloud_JSON's avatar
DCloud_JSON 已提交
7
// 实现,路由拦截。当应用无访问摄像头/相册权限,引导跳到设置界面 https://ext.dcloud.net.cn/plugin?id=5095
8
import interceptorChooseImage from '@/uni_modules/json-interceptor-chooseImage/js_sdk/main.js';
9 10
interceptorChooseImage()

11 12 13
// #endif
const db = uniCloud.database()
export default async function() {
14
	const debug = uniStarterConfig.debug;
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42

	// uniStarterConfig挂载到getApp().globalData.config
	setTimeout(() => {
		getApp({
			allowDefault: true
		}).globalData.config = uniStarterConfig;
	}, 1)


	// 初始化appVersion(仅app生效)
	initAppVersion();

	//clientDB的错误提示
	function onDBError({
		code, // 错误码详见https://uniapp.dcloud.net.cn/uniCloud/clientdb?id=returnvalue
		message
	}) {
		console.log('onDBError', {
			code,
			message
		});
		// 处理错误
		console.error(code, message);
	}
	// 绑定clientDB错误事件
	db.on('error', onDBError)


43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
	//拦截云对象请求
	uniCloud.interceptObject({
		async invoke({
			objectName, // 云对象名称
			methodName, // 云对象的方法名称
			params // 参数列表
		}) {
			console.log('interceptObject',{
				objectName, // 云对象名称
				methodName, // 云对象的方法名称
				params // 参数列表
			});
			if(objectName == "uni-id-co" && (methodName.includes('loginBy') ||  ['login','registerUser'].includes(methodName) )){
				console.log('执行登录相关云对象');
				params[0].inviteCode = await new Promise((callBack) => {
58 59
					uni.getClipboardData({
						success: function(res) {
60
							console.log('剪切板内容:'+res.data);
61 62
							if (res.data.slice(0, 18) == 'uniInvitationCode:') {
								let uniInvitationCode = res.data.slice(18, 38)
63
								console.log('当前用户是其他用户推荐下载的,推荐者的code是:' + uniInvitationCode);
64 65 66 67 68 69 70
								// uni.showModal({
								// 	content: '当前用户是其他用户推荐下载的,推荐者的code是:'+uniInvitationCode,
								// 	showCancel: false
								// });
								callBack(uniInvitationCode)
								//当前用户是其他用户推荐下载的。这里登记他的推荐者id 为当前用户的myInviteCode。判断如果是注册
							} else {
71
								callBack()
72 73 74
							}
						},
						fail() {
75
							console.log('error--');
76
							callBack()
77
						},
78
						complete() {
79 80 81
							// #ifdef MP-WEIXIN
							uni.hideToast()
							// #endif
82 83 84
						}
					});
				})
DCloud_JSON's avatar
DCloud_JSON 已提交
85
				// console.log(params);
86
			}
87
			console.log(params);
88
		},
89 90 91 92 93
		success(e) {
			console.log(e);
		},
		complete() {

94
		},
95
		fail(e){
DCloud_JSON's avatar
DCloud_JSON 已提交
96
			console.error(e);
97
			if (debug) {
98 99 100 101
				uni.showModal({
					content: JSON.stringify(e),
					showCancel: false
				});
DCloud_JSON's avatar
DCloud_JSON 已提交
102 103 104 105 106
			}else{
				uni.showToast({
					title: '系统错误请稍后再试',
					icon:'error'
				});
107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163
			}
		}
	})


	// #ifdef APP-PLUS
	// 监听并提示设备网络状态变化
	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
			})
		}
	});
	// #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 => {
			// console.log('检查是否有可以更新的版本', res);
			if (res.result.code > 0) {
				// 有新版本
				getApp({
					allowDefault: true
				}).appVersion.hasNew = true;
			}
		})
	});
	// 检查更新
	// #endif
}