相信很多的小程序開發者都遇到過這種情況:小程序已經發布了新的正式版本,但依舊有很多用戶使用的是舊版本的小程序。舉個例子:如果說版本管理比較混亂的話,多個版本的小程序都指向同一個後臺服務器,那麼新老版本之間就可能存在着不兼容的問題,給用戶帶來不好的體驗。
產生上述情況的原因:小程序發佈了最新版本之後,用戶本地還存在舊版本的小程序,微信在這時可能沒有檢查小程序的版本更新,這就會導致用戶依舊在使用舊的版本。結果就是:小程序的新版本發佈,無法保證立即影響到所有的小程序用戶。
解決方法:開發者可以使用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: "當前微信版本過低,無法使用該功能,請升級到最新微信版本後重試。"
});
}
}