/** * 系统更新 - 后续版本更新 **/ import Vue from 'vue'; // import { getappdownload } from '@/common/request/apis/h5' // import { checkUpdate } from '@/common/utils/app-update-check'; export default { namespaced: true, // 储存数据 state: { update: false, data: {}, link: {}, download: { path: null, start: false, install: false, progress: 0, totalBytesWritten: 0, totalBytesExpectedToWrite: 0, }, task: null }, // 修改数据 mutations: { edit(state, {data, index}){ state[index] = data; } }, actions: { async update({commit, dispatch}, type) { // #ifdef MP const mp = uni.getUpdateManager(); // 请求完新版本信息的回调 mp.onCheckForUpdate((res) => { console.log(res.hasUpdate) if (!res.hasUpdate&&type) uni.$u.toast('已是最新版本,无需更新!') }); mp.onUpdateReady((res) => { // 新的版本已经下载好,调用 applyUpdate 应用新版本并重启 uni.showModal({ title: '更新提示', content: '新版本已经准备好,是否重启应用?', success(show) { if (show.confirm) { mp.applyUpdate(); } } }); }); mp.onUpdateFailed((res) => { console.log('新的版本下载失败') }); // #endif // #ifdef APP-PLUS const system_info = uni.getSystemInfoSync(); let params = { os: system_info.platform //本机设备操作系统 (android || ios) }; if (params.os != 'ios' && params.os != 'android') false; //如果不是安卓或ios 返回false //这里自行请求API获取版本信息 建议传入操作系统标识,返回本机对应的操作系统最新版本信息,也就是安卓的返回就是安卓的版本信息 ios返回就是ios的版本信息 getappdownload() .then(res => { let versionInfo = res.data.version; if (versionInfo&&versionInfo.downloadurl) { let update_info = { version: params.os == 'ios' ? versionInfo.newversion : versionInfo.newversion, //线上版本 now_url: params.os == 'ios' ? versionInfo.downloadurl : versionInfo.downloadurl, //更新链接 silent: versionInfo.silent ? versionInfo.silent : 0, //是否是静默更新 force: versionInfo.enforce, //是否是强制更新 net_check: versionInfo.net_check ? versionInfo.net_check : 1, //非WIfi是否提示 note: versionInfo.content //更新内容 }; checkUpdate(update_info, type).then(res => { if (res.msg) { if(type){ uni.$u.toast(res.msg) } } }); ///检查更新 } //checkUpdate 这个方法会做什么?:线上版本号 与 本地版本号做对比 ,如果需要更新 根据静默,强制、wifi等信息执行静默更新或跳转到升级页面 //跳转升级页面的前提是,需要新建并在pages.json中配置升级页面,配置方法请查看插件详情 }) .catch(err => { uni.$u.toast(err.msg); }); // #endif }, } };