1.小程序发布版本后,用户进入小程序时,小程序版本更新的提示没有出现,并且发现小程序功能是新的,但一些数据状态(非本地缓存)是之前的,没有恢复初始值。
2.小程序更新的机制到底是什么,在更新的时候会把当前小程序的所有数据或缓存删掉吗?
更新代码:app.jsx onShow
onShow() {
var that = this
if (wx.canIUse('getUpdateManager')) {
// 1. 检查小程序是否有新版本发布
const updateManager = wx.getUpdateManager()
updateManager.onCheckForUpdate(function (res) {
// 请求完新版本信息的回调
if (res.hasUpdate) {
// 检测到新版本,需要更新,给出提示
wx.showModal({
title: '更新提示',
content: '新版本已经准备好,是否重启应用?',
showCancel: false, //隐藏取消按钮
confirmText: '确定更新', //只保留确定更新按钮
success: function (res) {
if (res.confirm) {
// 2.用户确定下载更新小程序,小程序下载及更新静默进行
that.downLoadAndUpdate(updateManager)
} else if (res.cancel) {
// 用户点击取消按钮的处理,如果需要强制更新,则给出二次弹窗,如果不需要,则这里的代码都可以删掉了
wx.showModal({
title: '温馨提示~',
content: '本次版本更新涉及到新的功能添加,旧版本无法正常访问的哦~',
showCancel: false, //隐藏取消按钮
confirmText: '确定更新', //只保留确定更新按钮
success: function (res) {
if (res.confirm) {
//下载新版本,并重新应用
that.downLoadAndUpdate(updateManager)
}
},
})
}
},
})
}
})
}
}
// 下载小程序新版本并重启应用
downLoadAndUpdate(updateManager) {
wx.showLoading()
//静默下载更新小程序新版本
updateManager.onUpdateReady(function () {
wx.hideLoading()
//新的版本已经下载好,调用 applyUpdate 应用新版本并重启
updateManager.applyUpdate()
})
updateManager.onUpdateFailed(function () {
// 新的版本下载失败
wx.showModal({
title: '已经有新版本了哟~',
content: '新版本已经上线啦~,请您删除当前小程序,重新搜索打开哟~',
})
})
}
if (opt.scene !== 1154 && wx.canIUse('getUpdateManager')) {
const updateManager = wx.getUpdateManager()
updateManager.onCheckForUpdate(function (res) {
// 请求完新版本信息的回调
})
updateManager.onUpdateReady(function () {
// 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
updateManager.applyUpdate()
})
}
这样就可以了,那用写那么多,都是一些没用的
更新机制:https://developers.weixin.qq.com/miniprogram/dev/framework/runtime/update-mechanism.html
storage存的值,只有长时间不用或者删除小程序会清掉。
数据状态是你们自己的业务逻辑。
不删除小程序的话,小程序底层缓存数据是不会更新的