本文图文讲解如何通过代码让微信小程序主动更新。
针对小程序每次发布后都要刷新很久或者删除小程序后才能打开新版本的问题,我们可以在代码中使用UpdateManager 对象来管理更新,可通过 wx.getUpdateManager 接口获取实例。
UpdateManager 对象主要有以下几个方法:
UpdateManager.applyUpdate()强制小程序重启并使用新版本。在小程序新版本下载完成后(即收到 onUpdateReady 回调)调用。
UpdateManager.onCheckForUpdate(function callback)监听向微信后台请求检查更新结果事件。微信在小程序冷启动时自动检查更新,不需由开发者主动触发。
UpdateManager.onUpdateReady(function callback)监听小程序有版本更新事件。客户端主动触发下载(无需开发者触发),下载成功后回调。
UpdateManager.onUpdateFailed(function callback)监听小程序更新失败事件。小程序有新版本,客户端主动触发下载(无需开发者触发),下载失败(可能是网络原因等)后回调。
示例代码:
const updateManager = wx.getUpdateManager()
updateManager.onCheckForUpdate(function (res) {
// 请求完新版本信息的回调
console.log(res.hasUpdate)
})
updateManager.onUpdateReady(function () {
wx.showModal({
title: '更新提示',
content: '新版本已经准备好,是否重启应用?',
success: function (res) {
if (res.confirm) {
// 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
updateManager.applyUpdate()
}
}
})
})
updateManager.onUpdateFailed(function () {
// 新版本下载失败
})
以上是微信开放文档官方提供的,uni-app也有对应的封装方法。
至于在实际代码中要怎么加、加在哪里可以根据实际情况和需求去加,我个人是加在App的onShow方法中,因为小程序启动后App只渲染一次,而App的onShow方法在每次热启动都会执行,这样就可以确保每次打开小程序都能检查是否有更新,如果只想在第一次打开(冷启动)检查更新可以加在onLaunch方法中,这样性能会好些。
加了更新代码后只能在本地开放环境和正式环境看到效果,正式环境上了主动更新代码后要到下一个版本更新才会看到效果,本地开发环境只需要在微信开发者工具设置编译时模拟更新即可。
效果如下图:
手机上效果:
展开阅读全文
上一篇: 小程序开发[发布版本]