okok,不多说客套话了,我就直接上正餐了,代码里面都有注释,相信大家都能看的明白,当然大家看完如果有更好的处理,欢迎大家指教~
function autoUpdate(){
var self = this
// 判断小程序更新机制API兼容性
if (wx.canIUse('getUpdateManager')) {
const updateManager = wx.getUpdateManager()
//1. 检查小程序是否有新版本发布
updateManager.onCheckForUpdate(function (res) {
// 请求完新版本信息的回调
if (res.hasUpdate) {
//2. 小程序有新版本,则异步下载新版本,做好更新准备
updateManager.onUpdateReady(function () {
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()
// }
// })
// }
}
})
})
updateManager.onUpdateFailed(function () {
// 新的版本下载失败,可以给用户一些假象,重新下载小程序
wx.showModal({
title: '已经有新版本了哟~',
content: '新版本已经上线啦~,请您删除当前小程序,重新搜索打开哟~'
})
})
}
})
} else {
// 如果希望用户在最新版本的客户端上体验您的小程序,可以这样子提示
wx.showModal({
title: '提示',
content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。'
})
}
}
以上就是自动更新的全部的逻辑,还有就是此段代码需放到app.js
的onLaunch
的生命周期中~
当然你放到其他地方也是完全可以的,但放在这里最合适不过的~