小程序版本更新的问题
微信小程序在推出新版本后,使用者或许还在运用旧版本,原因是微信系统里留存着旧版本的积存,不会自主升级至最前沿版本。为了处理这一状况,创造者必须实施若干对策,以便让使用者能即时进行更新。
不推荐的强制更新方式
const updateManager = wx.getUpdateManager() updateManager.onCheckForUpdate(function (res) { // 请求完新版本信息的回调 console.log(res.hasUpdate) }) updateManager.onUpdateReady(function () { wx.showModal({ title: '更新提示', content: '新版本已经准备好,是否重启应用?', success(res) { if (res.confirm) { // 新的版本已经下载好,调用 applyUpdate 应用新版本并重启 updateManager.applyUpdate() } } }) }) updateManager.onUpdateFailed(function () { // 新版本下载失败 })
一种粗暴的解决方式是要求用户手动卸载旧版小程序,再重新查找并启动新版。具体步骤是引导用户进入微信的“发现”页面,点击“小程序”选项,找到目标小程序并执行删除操作,随后通过搜索功能重新找到并打开。尽管这种手段可以迫使用户完成更新,却会极大降低用户的使用感受,因此不应当采用。
推荐的自动更新方案
更妥当的方案是在小程序的主界面操作里嵌入版本核对程序。用户启动小程序后,系统会自动核对是否存在新版本。一旦发现新版本,会立刻通知用户进行升级,并自动获取最新版本。这项功能从基础库1.9.90版本起开始提供,对于更早的版本需要实施适配措施。
重大更新的特殊处理
当版本升级包含关键改动时,需要强制用户进行更新,在用户选择放弃升级的情况下可实施特殊应对措施。届时将呈现一个提示框,明确告知用户必须升级才能维持正常使用。若用户确认升级,则启动更新程序,若选择不升级,则再次显示升级提示。
//app.js App({ onLaunch: function(options) { this.autoUpdate() }, autoUpdate:function(){ console.log(new Date()) var self=this // 获取小程序更新机制兼容 if (wx.canIUse('getUpdateManager')) { const updateManager = wx.getUpdateManager() //1. 检查小程序是否有新版本发布 updateManager.onCheckForUpdate(function (res) { // 请求完新版本信息的回调 if (res.hasUpdate) { //2. 小程序有新版本,则静默下载新版本,做好更新准备 updateManager.onUpdateReady(function () { console.log(new Date()) wx.showModal({ title: '更新提示', content: '新版本已经准备好,是否重启应用?', success: function (res) { if (res.confirm) { //3. 新的版本已经下载好,调用 applyUpdate 应用新版本并重启 updateManager.applyUpdate() } else if (res.cancel) { //如果需要强制更新,则给出二次弹窗,如果不需要,则这里的代码都可以删掉了 wx.showModal({ title: '温馨提示~', content: '本次版本更新涉及到新的功能添加,旧版本无法正常访问的哦~', success: function (res) { self.autoUpdate() return; //第二次提示后,强制更新 if (res.confirm) { // 新的版本已经下载好,调用 applyUpdate 应用新版本并重启 updateManager.applyUpdate() } else if (res.cancel) { //重新回到版本更新提示 self.autoUpdate() } } }) } } }) }) updateManager.onUpdateFailed(function () { // 新的版本下载失败 wx.showModal({ title: '已经有新版本了哟~', content: '新版本已经上线啦~,请您删除当前小程序,重新搜索打开哟~', }) }) } }) } else { // 如果希望用户在最新版本的客户端上体验您的小程序,可以这样子提示 wx.showModal({ title: '提示', content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。' }) } } })
开发版的局限性
开发版和体验版小程序不存在版本差异,因此不能用于检验更新功能,模拟更新操作过后便失去效果,后续测试必须重新调整编译方式,这种状况给开发者的检测任务造成了一定麻烦。
更新流程的优化建议
当前升级机制存在数秒延迟,原因是版本提醒会在版本检测完毕且下载结束后才显示出来。更优的方案是在编译阶段一旦发现新版本就立刻发出通知,待用户应允后再启动下载过程。这样做能够有效减少用户的等待时长。
更新过程中的用户体验
整个更新验证环节耗时大约1到2秒,若用户在此阶段实施操作,更新通知将会干扰用户活动。建议在获取新版本期间展示进展条,以便用户明确知晓进行中状态,待下载完毕后自动重启应用,以此提升整体体验的连贯性。
基础库版本设置建议
App({ onLaunch: function(options) { this.autoUpdate() }, autoUpdate: function() { var self = this // 获取小程序更新机制兼容 if (wx.canIUse('getUpdateManager')) { const updateManager = wx.getUpdateManager() //1. 检查小程序是否有新版本发布 updateManager.onCheckForUpdate(function(res) { // 请求完新版本信息的回调 if (res.hasUpdate) { //检测到新版本,需要更新,给出提示 wx.showModal({ title: '更新提示', content: '检测到新版本,是否下载新版本并重启小程序?', success: function(res) { if (res.confirm) { //2. 用户确定下载更新小程序,小程序下载及更新静默进行 self.downLoadAndUpdate(updateManager) } else if (res.cancel) { //用户点击取消按钮的处理,如果需要强制更新,则给出二次弹窗,如果不需要,则这里的代码都可以删掉了 wx.showModal({ title: '温馨提示~', content: '本次版本更新涉及到新的功能添加,旧版本无法正常访问的哦~', showCancel:false,//隐藏取消按钮 confirmText:"确定更新",//只保留确定更新按钮 success: function(res) { if (res.confirm) { //下载新版本,并重新应用 self.downLoadAndUpdate(updateManager) } } }) } } }) } }) } else { // 如果希望用户在最新版本的客户端上体验您的小程序,可以这样子提示 wx.showModal({ title: '提示', content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。' }) } }, /** * 下载小程序新版本并重启应用 */ downLoadAndUpdate: function (updateManager){ var self=this wx.showLoading(); //静默下载更新小程序新版本 updateManager.onUpdateReady(function () { wx.hideLoading() //新的版本已经下载好,调用 applyUpdate 应用新版本并重启 updateManager.applyUpdate() }) updateManager.onUpdateFailed(function () { // 新的版本下载失败 wx.showModal({ title: '已经有新版本了哟~', content: '新版本已经上线啦~,请您删除当前小程序,重新搜索打开哟~', }) }) } })
运营人员于平台后台能够调整核心库的起始版本。依据用户实际应用状况及官方统计,挑选一个涵盖大部分人群的版本。如此一来,既可降低接口适配检测的复杂性,又可引导用户升级微信软件,从而让小程序的扩展功能得以顺利应用。
版权声明:本文为 “博览广文网” 原创文章,转载请附上原文出处链接及本声明;
工作时间:8:00-18:00
客服电话
0755-88186625
电子邮件
admin@lanyu.com
扫码二维码
获取最新动态