項目出現的問題,開發者在管理後臺發佈新版本的小程序之後,如果某個用戶本地有小程序的歷史版本,此時打開的可能還是舊版本,需要關掉小程序,再重新打開,纔會是新版本的小程序。
我們需要去官網瞭解兩個小程序的概念:
- 冷啓動:如果用戶首次打開,或小程序銷燬後被用戶再次打開,此時小程序需要重新加載啓動,即冷啓動。
- 熱啓動:如果用戶已經打開過某小程序,然後在一定時間內再次打開該小程序,此時小程序並未被銷燬,只是從後臺狀態進入前臺狀態,這個過程就是熱啓動。
小程序每次冷啓動時,都會檢查是否有更新版本,如果發現有新版本,將會異步下載新版本的代碼包,並同時用客戶端本地的包進行啓動,即新版本的小程序需要等下一次冷啓動纔會應用上。
如果需要馬上應用最新版本,可以使用 wx.getUpdateManager API 進行處理。
const updateManager = wx.getUpdateManager()
updateManager.onCheckForUpdate(function (res) {
// 請求完新版本信息的回調
console.log(res.hasUpdate)
})
updateManager.onUpdateReady(function () {
wx.showModal({
title: '更新提示',
content: '新版本已經準備好,是否重啓應用?',
success(res) {
if (res.confirm) {
// 新的版本已經下載好,調用 applyUpdate 應用新版本並重啓
updateManager.applyUpdate()
}
}
})
})
updateManager.onUpdateFailed(function () {
// 新版本下載失敗
})