小程序先提交了一個版本,但是用的時候發現了一些問題需要及時的更新,這時候就要發布新版本。如何讓用戶自己的小程序也更新到最新版本呢?
一、運行機制
小程序啟動會有兩種情況,一種是「冷啟動」,一種是「熱啟動」。
假如用戶已經打開過某小程序,然后在一定時間內(五分鐘)再次打開該小程序,此時無需重新啟動,只需將后臺態的小程序切換到前臺,這個過程就是熱啟動;
冷啟動指的是用戶首次打開或小程序被微信主動銷毀后再次打開的情況,此時小程序需要重新加載啟動。
- 小程序沒有重啟的概念
- 當小程序進入后臺,客戶端會維持一段時間的運行狀態,超過一定時間后(目前是5分鐘)會被微信主動銷毀
- 當短時間內(5s)連續收到兩次以上收到系統內存告警,會進行小程序的銷毀
二、更新機制
小程序冷啟動時如果發現有新版本,將會異步下載新版本的代碼包,并同時用客戶端本地的包進行啟動,即新版本的小程序需要等下一次冷啟動才會應用上。 如果需要馬上應用最新版本,可以使用 wx.getUpdateManager API 進行處理。
三、更新API
wx.getUpdateManager()使用該接口,可以獲知是否有新版本小程序、新版本是否下載好以及應用新版本的能力。
// 獲取小程序更新機制兼容
if (wx.canIUse('getUpdateManager')) {
const updateManager = wx.getUpdateManager()
updateManager.onCheckForUpdate(function (res) {
// 請求完新版本信息的回調
if (res.hasUpdate) {
updateManager.onUpdateReady(function () {
wx.showModal({
title: '更新提示',
content: '新版本已經準備好,是否重啟應用?',
success: function (res) {
if (res.confirm) {
// 新的版本已經下載好,調用 applyUpdate 應用新版本并重啟
updateManager.applyUpdate()
}
}
})
})
updateManager.onUpdateFailed(function () {
// 新的版本下載失敗
wx.showModal({
title: '已經有新版本了喲~',
content: '新版本已經上線啦~,請您刪除當前小程序,重新搜索打開喲~',
})
})
}
})
} else {
// 如果希望用戶在最新版本的客戶端上體驗您的小程序,可以這樣子提示
wx.showModal({
title: '提示',
content: '當前微信版本過低,無法使用該功能,請升級到最新微信版本后重試。'
})
}
不知道把這段代碼放在哪里,寫這段代碼時查了好多資料,最后放在了app.js的onLaunch方法里了
發布的第一版不會生效,下一版才會生效的。