关于微信小程序发布新版本后的提示用户更新的方法详解

当小程序发布新的版本后 ,用户如果之前访问过该小程序,通过已打开的小程序进入(未手动删除),则会检测新版本,提醒用户更新新的版本

话不多说,上代码

App({
   onLaunch: function () {
     // 检查更新
     this.autoUpdate()
   },
   autoUpdate: function(){
     let _this = this
     // 获取小程序更新机制的兼容,由于更新的功能基础库要1.9.90以上版本才支持,所以此处要做低版本的兼容处理
     if(wx.canIUse('getUpdateManager')){
       // wx.getUpdateManager接口,可以获知是否有新版本的小程序、新版本是否下载好以及应用新版本的能力,会返回一个UpdateManager实例
       const updateManager = wx.getUpdateManager()
       // 检查小程序是否有新版本发布,onCheckForUpdate:当小程序向后台请求完新版本信息,会通知这个版本告知检查结果
       updateManager.onCheckForUpdate(function(res){
         // 请求完新版本信息的回调
         if(res.hasUpdate){
           // 检测到新版本,需要更新,给出提示
           wx.showModal({
             title: '更新提示',
             content: '检测到新版本,是否下载新版本并重启小程序',
             success: function(res){
               if(res.confirm){
                 // 用户确定更新小程序,小程序下载和更新静默进行
                 _this.downLoadAndUpdate(updateManager)
               }else if(res.cancel){
                 // 若用户点击了取消按钮,二次弹窗,强制更新,如果用户选择取消后不需要进行任何操作,则以下内容可忽略
                 wx.showModal({
                   title: '提示',
                   content: '本次版本更新涉及到新功能的添加,旧版本将无法正常使用',
                   showCancel: false, // 隐藏取消按钮
                   confirmText: '确认更新', // 只保留更新按钮
                   success: function(res){
                     if(res.confirm){
                       // 下载新版本,重启应用
                       _this.downLoadAndUpdate(updateManager)
                     }
                   }
                 })
               }
             }
           })
         } 
       })
     } else {
       // 在最新版本客户端上体验小程序
       wx.showModal({
         title: '提示',
         content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试',
       })
     }
   },
   // 下载小程序最新版本并重启
   downLoadAndUpdate: function(updateManager){
     wx.showLoading()
     // 静默下载更新小程序新版本,onUpdateReady:当新版本下载完成回调
     updateManager.onUpdateReady(function(){
       wx.hideLoading()
       // applyUpdate:强制当前小程序应用上新版本并重启
       updateManager.applyUpdate()
     })
     // onUpdateFailed:当新版本下载失败回调
     updateManager.onUpdateFailed(function(){
       // 下载新版本失败
       wx.showModal({
         title: '已有新版本',
         content: '新版本已经上线了,请删除当前小程序,重新搜索打开',
       })
     })
   }
 })

 由于小程序开发版/体验版没有“版本”的概念,所以无法在开发版/体验版上测试版本更新情况,可以在开发工具上,添加编译模式,勾选最下方的“下次编译时模拟更新”,但是要注意,这种模式仅供一次编译,下次编译需重新设置

原文地址:https://www.cnblogs.com/jane2160/p/11263941.html