小程序实战(十七)-版本自动更新
发表时间:2021-1-4
发布人:葵宇科技
浏览次数:84
一、需求说明
- 目前出现情况:每次发布新版本,如果用户正在使用小程序,都需要让用户将小程序销毁再重新启动,才能使用最新版本的代码
- 希望当小程序版本更新后,用户打开小程序时自动检查是否有新版本,若有,则提示用户是否更新
二、需求实现
2.1 冷启动和热启动
用户打开小程序时有两种启动方式:
- 冷启动:若用户首次打开,或小程序销毁后被再次打开,此时需要重新加载,会检查当前最新版本的代码,并运行。
- 热启动:如果用户已经打开过小程序,且在一定时间内再次打开,此时小程序并未被销毁,并不会检查最新代码。
2.2 热启动时实现版本更新
使用微信官方提供的 api 来检查并更新版本: 一般会将代码写在 app.js 的 onLaunch 函数中,在打开小程序时就执行
App({
onLaunch() {
// 判断是否能用这个 api
if (wx.canIUse('getUpdateManager')) {
// 创建 updateManager 实例
const updateManager = wx.getUpdateManager()
// 检查是否有新版本
updateManager.onCheckForUpdate(function(res) {
// hasUpdate 指是否有新版本,为 boolean 值
if (res.hasUpdate) {
updateManager.onUpdateReady(function() {
wx.showModal({
title: '更新提示',
content: '新版本已经准备好,是否重启应用?',
success: function(res) {
if (res.confirm) {
// 强制更新版本
updateManager.applyUpdate()
}
}
})
}),
updateManager.onUpdateFailed(function() {
wx.showModal({
title: '已经有新版本了',
content: '新版本已经上线啦~,请您删除当前小程序,重新搜索打开'
})
})
}
})
} else {
wx.showModal({
title: '提示',
content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。'
})
}
}
})
复制代码
附上用到的几个 api 说明:
- UpdateManager.onCheckForUpdate()
- UpdateManager.onUpdateReady()
- UpdateManager.applyUpdate()