我们在 uni-app 开发小程序的时候,小程序更新版本后,由于小程序客户端是异步更新,新版本覆盖较慢。因此如果用户之前已经打开过该小程序,那么通过 热启动
再进入小程序时,可能访问的还是旧版本,需要一段时间才能更新。但是如果小程序存在严重 bug 需要用户强制升级,那该怎么办呢?办法总是有的,直接上代码:
在项目根路径下的 App.vue
文件 onLaunch
中增加如下代码:
onLaunch: function() {
// #ifdef MP
this.mpUpdate()
// #endif
}
methods: {
mpUpdate() {
const updateManager = uni.getUpdateManager() // 小程序版本更新管理器
updateManager.onCheckForUpdate(res => { // 检测新版本后的回调
if(res.hasUpdate) { // 如果有新版本提醒并进行强制升级
uni.showModal({
content: '发现新版本',
showCancel: false,
confirmText: '升级',
success: res => {
if (res.confirm) {
updateManager.onUpdateReady(res => { // 新版本下载完成的回调
updateManager.applyUpdate() // 强制当前小程序应用上新版本并重启
})
updateManager.onUpdateFailed(res => { // 新版本下载失败的回调
// 新版本下载失败,提示用户删除后通过冷启动重新打开
uni.showModal({
content: '下载失败,请删除当前小程序后重新打开',
showCancel: false,
confirmText: '知道了'
})
})
}
}
})
}
})
}
}
官方文档:
uni-app 小程序更新官方文档
小程序启动方式小贴士:
冷启动
:指用户首次打开或小程序被微信主动销毁后再次打开,此时小程序需要重新加载启动。热启动
:指用户已经打开过某小程序,然后在一定时间内再次打开该小程序,此时无需重新启动,只需将后台态的小程序切换到前台,这个过程并不会重新加载启动。
版权属于:瞭月
本文链接:https://www.lervor.com/archives/159/
版权声明:本文为瞭月原创文章,转载请附上原文出处链接和本声明。