uniapp: 微信小程序版本自動(dòng)更新的方法

微信小程序版本自動(dòng)更新的方法
公司的小程序項(xiàng)目上線, 后期還會(huì)有小型的版本迭代. 為了讓用戶能在我們進(jìn)行版本迭代后及時(shí)使用最新版本的功能. 做了以下優(yōu)化..

知識(shí)點(diǎn)1: 當(dāng)用戶點(diǎn)擊左上角關(guān)閉,或者按了設(shè)備Home 鍵離開微信粤铭,小程序并沒有直接銷毀傻唾,而是進(jìn)入了后臺(tái);
當(dāng)再次進(jìn)入微信或再次打開小程序承耿,又會(huì)從后臺(tái)進(jìn)入前臺(tái)冠骄,只有當(dāng)小程序進(jìn)入后臺(tái)一定時(shí)間,或者系統(tǒng)資源占用過高加袋,才會(huì)被真正的銷毀凛辣。

知識(shí)點(diǎn)2:小程序的啟動(dòng)分為"冷啟動(dòng)" 和 "熱啟動(dòng)".

  • 熱啟動(dòng)是指: 小程序打開后,在一段時(shí)間內(nèi)(目前:5分鐘)再次被打開职烧,此時(shí)會(huì)將后臺(tái)的小程序切換到前臺(tái)扁誓。
  • 冷啟動(dòng)是指: 小程序首次打開或銷毀后再次被打開

知識(shí)點(diǎn)3: 更新版本
冷啟動(dòng)時(shí), 如果發(fā)現(xiàn)有新版本,將會(huì)異步下載新版本的代碼包蚀之,并同時(shí)用客戶端本地的包進(jìn)行啟動(dòng)蝗敢,即新版本的小程序需要等下一次冷啟動(dòng)才會(huì)應(yīng)用上。

如果要馬上應(yīng)用最新版本足删,使用wx.getUpdateManager API 進(jìn)行處理寿谴。
代碼如下:

// 在app.js里寫下以下代碼
 onLaunch () {
  if (wx.canIUse('getUpdateManager')) {
   const updateManager = wx.getUpdateManager()
   updateManager.onCheckForUpdate(function (res) {
    console.log('onCheckForUpdate====', res)
    // 請(qǐng)求完新版本信息的回調(diào)
    if (res.hasUpdate) {
     console.log('res.hasUpdate====')
     updateManager.onUpdateReady(function () {
      wx.showModal({
       title: '更新提示',
       content: '新版本已經(jīng)準(zhǔn)備好,是否重啟應(yīng)用失受?',
       success: function (res) {
        console.log('success====', res)
        // res: {errMsg: "showModal: ok", cancel: false, confirm: true}
        if (res.confirm) {
         // 新的版本已經(jīng)下載好讶泰,調(diào)用 applyUpdate 應(yīng)用新版本并重啟
         updateManager.applyUpdate()
        }
       }
      })
     })
     updateManager.onUpdateFailed(function () {
      // 新的版本下載失敗
      wx.showModal({
       title: '已經(jīng)有新版本了喲~',
       content: '新版本已經(jīng)上線啦~,請(qǐng)您刪除當(dāng)前小程序拂到,重新搜索打開喲~'
      })
     })
    }
   })
  }
 }

知識(shí)點(diǎn)4: 小程序重新初始化時(shí)會(huì)觸發(fā)onLaunch事件. onLaunch事件會(huì)觸發(fā)在頁面onShow事件之前.獲取小程序更新版本可以寫在onLaunch里.

知識(shí)點(diǎn)5:在開發(fā)和體驗(yàn)版無法測(cè)試版本更新. 需要在開發(fā)者工具里,編譯時(shí)選擇"模擬更新編譯"

image.png

(部分開發(fā)者工具版本, 每次update編譯時(shí)都需要重新勾選此選項(xiàng))
點(diǎn)擊確定,重新編譯.
頁面會(huì)彈窗顯示:
image.png

點(diǎn)擊確認(rèn)后: 
image.png

控制臺(tái)顯示:
image.png

知識(shí)點(diǎn)6: 隨著小程序的不斷更新, 部分功能可能需要最新版的微信客戶端才能使用. 這時(shí)候可以彈窗提示用戶更新到最新版本微信

 if (wx.canIUse('getUpdateManager')) {
 ...
} else {
 // can't use getUpdateManager
 wx.showModal({
    title: '提示',
    content: '當(dāng)前微信版本過低痪署,無法使用該功能,請(qǐng)升級(jí)到最新微信版本后重試兄旬。'
  })

完整版本:

 onLaunch () {
  if (wx.canIUse('getUpdateManager')) {
   const updateManager = wx.getUpdateManager()
   updateManager.onCheckForUpdate(function (res) {
    if (res.hasUpdate) {
     updateManager.onUpdateReady(function () {
      wx.showModal({
       title: '更新提示',
       content: '新版本已經(jīng)準(zhǔn)備好狼犯,是否重啟應(yīng)用?',
       success: function (res) {
        if (res.confirm) {
         updateManager.applyUpdate()
        }
       }
      })
     })
     updateManager.onUpdateFailed(function () {
      wx.showModal({
       title: '已經(jīng)有新版本了喲~',
       content: '新版本已經(jīng)上線啦~领铐,請(qǐng)您刪除當(dāng)前小程序悯森,重新搜索打開喲~'
      })
     })
    }
   })
  } else {
   wx.showModal({
    title: '提示',
    content: '當(dāng)前微信版本過低,無法使用該功能罐孝,請(qǐng)升級(jí)到最新微信版本后重試呐馆。'
   })
  }
 }

知識(shí)點(diǎn)7: 如果在onLaunch里進(jìn)行請(qǐng)求, 這是異步請(qǐng)求. 如果對(duì)交互順序有要求, 如: 版本更新--重新獲取數(shù)據(jù)-- 用戶展示, 那么需要考慮在callback里進(jìn)行重獲數(shù)據(jù).

知識(shí)點(diǎn)8:小程序啟動(dòng)時(shí),正常是會(huì)熱更新莲兢,下載新版本的包汹来,下一次啟動(dòng)就會(huì)使用新包。但發(fā)現(xiàn)有更新不成功的情況發(fā)生.
官方回答: 策略生效跟網(wǎng)絡(luò)環(huán)境以及發(fā)布時(shí)間等若干因素有關(guān)改艇,會(huì)盡可能讓小程序快地更新收班,但無法保證每次都熱更新成功。

知識(shí)點(diǎn)9:小程序的異步更新發(fā)生在冷啟動(dòng)過程. 官方不建議熱更新. 原因:

image.png

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末谒兄,一起剝皮案震驚了整個(gè)濱河市摔桦,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌承疲,老刑警劉巖邻耕,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異燕鸽,居然都是意外死亡兄世,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門啊研,熙熙樓的掌柜王于貴愁眉苦臉地迎上來御滩,“玉大人,你說我怎么就攤上這事党远∠鹘猓” “怎么了?”我有些...
    開封第一講書人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵沟娱,是天一觀的道長(zhǎng)氛驮。 經(jīng)常有香客問我,道長(zhǎng)济似,這世上最難降的妖魔是什么柳爽? 我笑而不...
    開封第一講書人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮碱屁,結(jié)果婚禮上磷脯,老公的妹妹穿的比我還像新娘。我一直安慰自己娩脾,他們只是感情好赵誓,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著柿赊,像睡著了一般俩功。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上碰声,一...
    開封第一講書人閱讀 51,718評(píng)論 1 305
  • 那天诡蜓,我揣著相機(jī)與錄音,去河邊找鬼胰挑。 笑死蔓罚,一個(gè)胖子當(dāng)著我的面吹牛椿肩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播豺谈,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼郑象,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了茬末?” 一聲冷哼從身側(cè)響起厂榛,我...
    開封第一講書人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎丽惭,沒想到半個(gè)月后击奶,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡责掏,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年柜砾,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拷橘。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡局义,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出冗疮,到底是詐尸還是另有隱情萄唇,我是刑警寧澤,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布术幔,位于F島的核電站另萤,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏诅挑。R本人自食惡果不足惜四敞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望拔妥。 院中可真熱鬧忿危,春花似錦、人聲如沸没龙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽硬纤。三九已至解滓,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間筝家,已是汗流浹背洼裤。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留溪王,地道東北人腮鞍。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓值骇,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親缕减。 傳聞我的和親對(duì)象是個(gè)殘疾皇子雷客,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355