小程序版本更新的问题
微信小程序在推出新版本后,使用者或许还在运用旧版本,原因是微信系统里留存着旧版本的积存,不会自主升级至最前沿版本。为了处理这一状况,创造者必须实施若干对策,以便让使用者能即时进行更新。
不推荐的强制更新方式
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
扫码二维码
获取最新动态
