目录
冷启动 & 热启动
小程序更新机制:
强制更新方案
如何测试?
冷启动 & 热启动
-
冷启动:如果用户首次打开,或小程序销毁后被用户再次打开,此时小程序需要重新加载启动,即冷启动。
-
热启动:如果用户已经打开过某小程序,然后在一定时间内再次打开该小程序,此时小程序并未被销毁,只是从后台状态进入前台状态,这个过程就是热启动。
从小程序生命周期的角度来看,我们一般讲的「启动」专指冷启动,热启动一般被称为后台切前台。
文章来源地址https://www.toymoban.com/news/detail-484815.html
小程序更新机制:
小程序在更新版本后,如果没有主动删除小程序再进入,那么小程序还是用的旧版本代码,无法更新最新版本。这样如果有紧急问题修复上线,用户却不能第一时间强制更新。
启动时同步更新:
a. 定期检查发现版本更新,微信运行时定时检查下载更新
b. 用户长时间未使用小程序,会强制同步更新
启动时异步更新
即使启动前未发现更新,小程序每次冷启动时,都会异步检查是否有更新版本。如果发现有新版本,将会异步下载新版本的代码包。但当次启动仍会使用客户端本地的旧版本代码,即新版本的小程序需要等下一次冷启动才会使用。
强制更新方案
官方提供了 UpdateManager 更新管理器对象,用来检测是否有新的版本发布。
UpdateManager 对象提供以下四种方法:
UpdateManager.applyUpdate()
强制小程序重启并使用新版本。在小程序新版本下载完成后(即收到 onUpdateReady 回调)调用。
UpdateManager.onCheckForUpdate(function callback)
监听向微信后台请求检查更新结果事件。微信在小程序冷启动时自动检查更新,不需由开发者主动触发。
UpdateManager.onUpdateReady(function callback)
监听小程序有版本更新事件。客户端主动触发下载(无需开发者触发),下载成功后回调
UpdateManager.onUpdateFailed(function callback)
监听小程序更新失败事件。小程序有新版本,客户端主动触发下载(无需开发者触发),下载失败(可能是网络原因等)后回调
另外,如果当前版本更新有重大调整,一定需要用户更新,有两种情况:
第一种方法是可以在用户点击取消的回调中给出提示,并重新进入版本提示流程。
第二种方法就是去除取消按钮,只有确定按钮。强制用户必须升级,才能继续使用。
if (wx.canIUse('getUpdateManager')) {
const updateManager = wx.getUpdateManager();
updateManager.onCheckForUpdate(function (res) {
if (res.hasUpdate) {
// 弹出提示框,提示用户更新并重启小程序
updateManager.onUpdateReady(function () {
wx.showModal({
title: '更新提示',
showCancel: false,
confirmText: '马上重启',
content: '新版本已经上线,需要您重启小程序以应用新版本。',
success: function (res) {
if (res.confirm) {
// 调用 applyUpdate 应用新版本并重启
updateManager.applyUpdate();
}
}
});
});
// 新版本下载失败时弹出提示框
updateManager.onUpdateFailed(function () {
wx.showModal({
title: '更新失败',
content: '新版本下载失败,请删除当前小程序,重新搜索打开。',
});
});
}
});
} else { // 如果用户微信版本过低,则弹出提示框
wx.showModal({
title: '提示',
content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。',
});
}
boolean wx.canIUse(string schema)
判断小程序的API,回调,参数,组件等是否在当前版本可用。
如何测试?
注意:
微信开发者工具上可以通过「编译模式」下的「下次编译模拟更新」开关来调试
小程序开发版/体验版没有「版本」概念,所以无法在开发版/体验版上测试更版本更新情况
文章来源:https://www.toymoban.com/news/detail-484815.html
到了这里,关于微信小程序强制更新的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!