需要使用DClound插件市场的一个插件挺好用的!
app升级、整包更新和热更新组件 支持vue3 支持打开安卓、苹果应用市场,wgt静默更新https://ext.dcloud.net.cn/plugin?id=7286
开始贴代码
// @/utils/method.js/*** 获取当前app最新版本* @param number versionCode 当前app的版本号*/
export function getAppCurrentVersion(versionCode) {return new Promise(async (resolve, reject) => {const params = {// android或者iossystem: uni.$u.os() == 'ios' ? 1 : 0,// 版本号 如:100editionNumber: versionCode || ''}// 需要改成自己的服务端的获取app最新版本的接口...// 接口返回值要跟要求的字段一样const res = await getAppVersion(params)resolve(res.data)})
}// #ifdef APP-PLUS
// app端强制更新
export function checkAppUpdate() {getAppCurrentVersion().then(data => {const obj = {system: data.system,describe: data.describe, // 版本更新内容edition_url: data.editionUrl, // apk、wgt包下载地址或者应用市场地址edition_force: data.editionForce, // 是否强制更新 0代表否 1代表是package_type: data.packageType, // 0是整包升级(apk或者appstore或者安卓应用市场) 1是wgt升级edition_issue: data.editionIssue, // 是否发行 0否 1是 为了控制上架应用市场审核时不能弹出热更新框// 版本号 最重要的manifest里的版本号 (检查更新主要以服务器返回的edition_number版本号是否大于当前app的版本号来实现是否更新)edition_number: data.editionNumber,edition_name: data.editionName, // 版本名称 manifest里的版本名称edition_silence: data.editionSilence // 是否静默更新 0代表否 1代表是}plus.runtime.getProperty(plus.runtime.appid, (inf) => {// 判断后台返回版本号是否大于当前应用版本号 && 是否发行(上架应用市场时一定不能弹出更新提示)if (Number(obj.edition_number) > Number(inf.versionCode) && obj.edition_issue == 1) {/*** 如果是wgt升级,并且是静默更新* 注意!如果是手动检查新版本,就不用判断静默更新,请直接跳转更新页,不然点击检查新版本后会没反应*/if (obj.package_type == 1 && obj.edition_silence == 1) {// 调用静默更新方法 传入下载地址silenceUpdate(obj.edition_url)} else {/*** 跳转更新页面* 注意!如果pages.json第一页的代码里有一打开就跳转其他页面的操作,下面这行代码最好写在setTimeout里面设置延时3到5秒再执行*/uni.navigateTo({url: '/uni_modules/rt-uni-update/components/rt-uni-update/rt-uni-update?obj=' + JSON.stringify(obj)})}} else {// 如果是手动检查新版本 需开启以下注释// uni.showModal({// title: '提示',// content: '已是最新版本',// showCancel: false// })}})})
}
// #endif// #ifdef MP-WEIXIN
// 微信小程序更新检测
export function checkUpdate() {// 获取更新管理器对象const updateManager = uni.getUpdateManager()updateManager.onCheckForUpdate(res => {if (res.hasUpdate) {updateManager.onUpdateReady(() => {uni.showModal({title: '更新提示',content: '新版本已经准备好,点击确定重新启动',showCancel: false,success: res => {if (res.confirm) {updateManager.applyUpdate()}}})})updateManager.onUpdateFailed(() => {uni.showModal({title: '提示',content: '检查到有新版本,但是下载失败,请检查网络设置',showCancel: false})})}})
}
// #endif
然后在 App.vue 页面 下的 onShow 方法调用前面的方法
// App.vueimport { checkAppUpdate, checkUpdate } from '@/utils/method.js'
export default {onShow() {// #ifdef MP-WEIXINcheckUpdate()// #endif// #ifdef APP-PLUScheckAppUpdate()// #endif}
}
附带个检测微信小程序的更新~