国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

微信小程序版本自動更新的方法

2019-11-19 11:20:40
字體:
供稿:網(wǎng)友

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

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

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

熱啟動是指: 小程序打開后,在一段時(shí)間內(nèi)(目前:5分鐘)再次被打開,此時(shí)會將后臺的小程序切換到前臺。

冷啟動是指: 小程序首次打開或銷毀后再次被打開

知識點(diǎn)3: 更新版本

冷啟動時(shí), 如果發(fā)現(xiàn)有新版本,將會異步下載新版本的代碼包,并同時(shí)用客戶端本地的包進(jìn)行啟動,即新版本的小程序需要等下一次冷啟動才會應(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)    // 請求完新版本信息的回調(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)上線啦~,請您刪除當(dāng)前小程序,重新搜索打開喲~'      })     })    }   })  } }

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

知識點(diǎn)5:

在開發(fā)和體驗(yàn)版無法測試版本更新

需要在開發(fā)者工具里,編譯時(shí)選擇"模擬更新編譯"

(部分開發(fā)者工具版本, 每次update編譯時(shí)都需要重新勾選此選項(xiàng))

點(diǎn)擊確定,重新編譯.

頁面會彈窗顯示:

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

控制臺顯示:

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

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

完整版本:

 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)上線啦~,請您刪除當(dāng)前小程序,重新搜索打開喲~'      })     })    }   })  } else {   wx.showModal({    title: '提示',    content: '當(dāng)前微信版本過低,無法使用該功能,請升級到最新微信版本后重試。'   })  } }

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

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

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

參考資料:

官方-強(qiáng)制更新

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 青州市| 潼南县| 栖霞市| 永修县| 宝丰县| 汶上县| 百色市| 全州县| 西昌市| 林西县| 瑞丽市| 图木舒克市| 元氏县| 历史| 昆山市| 黄冈市| 宁国市| 蓬安县| 江西省| 新龙县| 九龙县| 桂东县| 新密市| 枣庄市| 沂水县| 朝阳市| 绥化市| 体育| 洛川县| 札达县| 陆良县| 洪湖市| 滦南县| 祁东县| 保亭| 东至县| 屯留县| 镇赉县| 鄂托克旗| 滦南县| 惠州市|