相信很多的小程序开发者都遇到过这种情况:小程序已经发布了新的正式版本,但依旧有很多用户使用的是旧版本的小程序。举个例子:如果说版本管理比较混乱的话,多个版本的小程序都指向同一个后台服务器,那么新老版本之间就可能存在着不兼容的问题,给用户带来不好的体验。
产生上述情况的原因:小程序发布了最新版本之后,用户本地还存在旧版本的小程序,微信在这时可能没有检查小程序的版本更新,这就会导致用户依旧在使用旧的版本。结果就是:小程序的新版本发布,无法保证立即影响到所有的小程序用户。
解决方法:开发者可以使用wx.getUpdateManager的API来更新小程序。示例代码如下:
截图和代码是一样的。
/**
* 检查小程序版本更新
* @param isForce 是否强制更新
*/
function versionUpdate(isForce = false) {
// 判断当前版本getUpdateManager的API是否可用
if (wx.canIUse("getUpdateManager")) {
// 获取全局唯一的版本更新管理器,用于管理小程序更新
const updateManager = wx.getUpdateManager();
// 监听向微信后台请求检查更新结果事件
updateManager.onCheckForUpdate(function(res) {
// 请求完新版本信息的回调
if (res.hasUpdate) {
// 存在新的版本。监听小程序有版本更新事件
updateManager.onUpdateReady(function() {
if (isForce) {
// 强制小程序重启并使用新版本
updateManager.applyUpdate();
} else {
// 提示用户版本更新信息
wx.showModal({
title: "版本更新提示",
content: "新版本已经准备好,是否重启应用?",
success(res) {
if (res.confirm) {
// 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
updateManager.applyUpdate();
}
}
});
}
});
// 监听小程序更新失败事件。后续操作,开发者可自行处理。
updateManager.onUpdateFailed(function() {
wx.showModal({
title: "已经有新版本了哟~",
content: "新版本已经上线啦~,请您删除当前小程序,重新搜索打开哟~"
});
});
}
});
} else {
// 提示用户升级版本
wx.showModal({
title: "提示",
content: "当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。"
});
}
}