check-update.js 1.7 KB
Newer Older
芊里 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 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 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
// 推荐再App.vue中使用
const PACKAGE_INFO_KEY = '__package_info__'

export default function() {
	// #ifdef APP-PLUS
	plus.runtime.getProperty(plus.runtime.appid, function(widgetInfo) {
		uniCloud.callFunction({
			name: 'check-version',
			data: {
				appid: plus.runtime.appid,
				appVersion: plus.runtime.version,
				wgtVersion: widgetInfo.version
			},
			success: (e) => {
				if (!e.result) return;
				const {
					code,
					message,
					is_silently, // 是否静默更新
					url, // 安装包下载地址
					platform, // 安装包平台
					type // 安装包类型
				} = e.result;
				// 此处逻辑仅为实例,可自行编写
				if (code > 0) {
					// 静默更新,只有wgt有
					if (is_silently) {
						downloadTask = uni.downloadFile({
							url: this.url,
							success: res => {
								if (res.statusCode == 200) {
									// 下载好直接安装,下次启动生效
									plus.runtime.install(res.tempFilePath, {
										force: false
									});
								}
							}
						});
						return;
					}
					
					if (type === 'native_app' && platform.includes('iOS')) {
						// iOS 跳转 AppStore 商店
						plus.runtime.openURL(url);
						return;
					}

					uni.setStorageSync(PACKAGE_INFO_KEY, e.result)

					// 跳转更新页面
					uni.navigateTo({
						url: '/uni_modules/uni-upgrade-center-app/pages/upgrade-popup?local_storage_key=' +
							PACKAGE_INFO_KEY,
						fail: (err) => {
							console.error('更新弹框跳转失败', err)
							uni.removeStorageSync(PACKAGE_INFO_KEY)
						}
					})
				} else if (code < 0) {
					// TODO 云函数报错处理
					console.error(message)
				}
			},
			fail: (err) => {
				// TODO 云函数报错处理
				console.error(err.message)
			}
		})
	});
	// #endif
}