小程序先提交了一個(gè)版本,但是用的時(shí)候發(fā)現(xiàn)了一些問題需要及時(shí)的更新,這時(shí)候就要發(fā)布新版本。如何讓用戶自己的小程序也更新到最新版本呢?
一、運(yùn)行機(jī)制
小程序啟動(dòng)會(huì)有兩種情況,一種是「冷啟動(dòng)」,一種是「熱啟動(dòng)」。
假如用戶已經(jīng)打開過某小程序,然后在一定時(shí)間內(nèi)(五分鐘)再次打開該小程序,此時(shí)無(wú)需重新啟動(dòng),只需將后臺(tái)態(tài)的小程序切換到前臺(tái),這個(gè)過程就是熱啟動(dòng);
冷啟動(dòng)指的是用戶首次打開或小程序被微信主動(dòng)銷毀后再次打開的情況,此時(shí)小程序需要重新加載啟動(dòng)。
小程序沒有重啟的概念
當(dāng)小程序進(jìn)入后臺(tái),客戶端會(huì)維持一段時(shí)間的運(yùn)行狀態(tài),超過一定時(shí)間后(目前是5分鐘)會(huì)被微信主動(dòng)銷毀
當(dāng)短時(shí)間內(nèi)(5s)連續(xù)收到兩次以上收到系統(tǒng)內(nèi)存告警,會(huì)進(jìn)行小程序的銷毀
二、更新機(jī)制
小程序冷啟動(dòng)時(shí)如果發(fā)現(xiàn)有新版本,將會(huì)異步下載新版本的代碼包,并同時(shí)用客戶端本地的包進(jìn)行啟動(dòng),即新版本的小程序需要等下一次冷啟動(dòng)才會(huì)應(yīng)用上。 如果需要馬上應(yīng)用最新版本,可以使用 wx.getUpdateManager API 進(jìn)行處理。
三、更新API
wx.getUpdateManager()
//使用該接口,可以獲知是否有新版本小程序、新版本是否下載好以及應(yīng)用新版本的能力。
使用方法:在app.js的onLauch函數(shù),加下面一段代碼即可實(shí)現(xiàn):
constupdateManager=wx.getUpdateManager()updateManager.onCheckForUpdate(
function(res){// 請(qǐng)求完新版本信息的回調(diào)
console.log(res.hasUpdate)
})
updateManager.onUpdateReady(
function(){
wx.showModal({
title:'更新提示',
content:'新版本已經(jīng)準(zhǔn)備好,是否重啟應(yīng)用?',
success:function(res){
if(res.confirm){
// 新的版本已經(jīng)下載好,調(diào)用 applyUpdate 應(yīng)用新版本并重啟
updateManager.applyUpdate()
}
}
})
}
)
updateManager.onUpdateFailed(
function(){// 新的版本下載失敗
wx.showModal({
title:'更新提示',
content:'新版本下載失敗',
showCancel:false
})
}
)
四、如何測(cè)試
