uni.getUpdateManager() 管理小程序更新

1,350 阅读2分钟
  • 废话不多少,直接上代码,下面将对其讲解。在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: '当前微信版本过低,可能无法使用该功能,请升级到最新版本后重试。'
        })
    }
  1. uni.canIUse(String) 判断应用的API,回调,参数,组件是否在当前版本可用。 H5 不支持。

  • uni.canIUse('getUpdateManager')
  1. 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: '新版本已经上线,请您删除当前小程序,重新搜索打开',
                    })
                })
            } 
        })