- 废话不多少,直接上代码,下面将对其讲解。在App.vue onshow()中调用
// 获取小程序更新机制兼容
if (uni.canIUse('getUpdateManager')) {
let _this = this
const updateManager = uni.getUpdateManager()
// 检查是否有新版本发布
updateManager.onCheckForUpdate(function(res) {
console.log(res.hasUpdate) // true
if (res.hasUpdate) {
//小程序有新版本,则静默下载新版本,做好更新准备
updateManager.onUpdateReady(function() {
uni.showModal({
title: '更新提示',
content: '新版本已经准备好,是否重启应用?',
success: function(res) {
if (res.confirm) {
//新的版本已经下载好,调用 applyUpdate 应用新版本并重启
updateManager.applyUpdate()
} else if (res.cancel) {
//如果需要强制更新,则给出二次弹窗,如果不需要,则这里的代码都可以删掉了
uni.showModal({
title: '温馨提示',
content: '本次版本更新涉及到新的功能添加,旧版本无法正常访问的哦~',
showCancel: false, //隐藏取消按钮,也可显示,取消会走res.cancel,然后从新开始提示
success: function(res) {
//第二次提示后,强制更新
if (res.confirm) {
// 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
updateManager.applyUpdate()
} else if (res.cancel) {
//重新回到版本更新提示
_this.autoUpdate()
}
}
})
}
}
})
})
// 新的版本下载失败
updateManager.onUpdateFailed(function() {
uni.showModal({
title: '温馨提示',
content: '新版本已经上线,请您删除当前小程序,重新搜索打开',
})
})
}
})
} else {
// 提示用户在最新版本的客户端上体验
uni.showModal({
title: '温馨提示',
content: '当前微信版本过低,可能无法使用该功能,请升级到最新版本后重试。'
})
}
-
uni.canIUse(String) 判断应用的API,回调,参数,组件是否在当前版本可用。 H5 不支持。
- uni.canIUse('getUpdateManager')
-
uni.getUpdateManager() 本API返回全局唯一的版本更新管理器对象: updateManager,用于管理小程序更新。
- updateManager 对象的方法列表:
- onCheckForUpdate ; callback ; 当向小程序后台请求完新版本信息,会进行回调
- onUpdateReady ; callback ; 当新版本下载完成,会进行回调
- onUpdateFailed ; callback ;当新版本下载失败,会进行回调
- applyUpdate 当新版本下载完成,调用该方法会强制当前小程序应用上新版本并重启
const updateManager = uni.getUpdateManager()
// 检查是否有新版本发布
updateManager.onCheckForUpdate(function(res) {
if (res.hasUpdate){ // 返回 true 代表有更新
// 将版本静默下载下来
updateManager.onUpdateReady(function() {
uni.showModel({
title:'更新提示',
content:'新版本已经准备好,是否重启应用?',
success: function(res) {
if (res.confirm) {
//新的版本已经下载好,调用 applyUpdate 应用新版本并重启
updateManager.applyUpdate()
}
}
})
})
updateManager.onUpdateFailed(function() {
uni.showModal({
title: '温馨提示',
content: '新版本已经上线,请您删除当前小程序,重新搜索打开',
})
})
}
})