亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

微信小程序發布新版本時自動提示用戶更新的方法

2019-11-19 11:22:20
字體:
來源:轉載
供稿:網友

如圖,當小程序發布新的版本后,用戶如果之前訪問過該小程序,通過已打開的小程序進入(未手動刪除),則會彈出這個提示,提醒用戶更新新的版本。用戶點擊確定就可以自動重啟更新,點擊取消則關閉彈窗,不再更新。

官方給的示例代碼:

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 () { // 新版本下載失敗})

官方提供的demo中,只有最基本的更新提示,并未做異常處理。而且官方也說了這個功能基礎庫 1.9.90 開始支持,低版本需做兼容處理,那么就需要對著端代碼進行改進了。

另一方面,如果當前版本更新有重大調整,一定需要用戶更新,那么可以在用戶點擊取消的回調中給出提示,并重新進入版本提示流程。如下圖,在上邊的更新提示中,用戶點擊取消,則彈出下面提示彈窗,用戶點擊確定,則更新版本,點擊取消,則重新調用上邊的更新提示??傊脩糁挥懈铝?,才能正常訪問小程序(如非必須,建議慎用)。

改善后的代碼:

//app.jsApp({ onLaunch: function(options) {  this.autoUpdate() }, autoUpdate:function(){  console.log(new Date())  var self=this  // 獲取小程序更新機制兼容  if (wx.canIUse('getUpdateManager')) {   const updateManager = wx.getUpdateManager()   //1. 檢查小程序是否有新版本發布   updateManager.onCheckForUpdate(function (res) {    // 請求完新版本信息的回調    if (res.hasUpdate) {     //2. 小程序有新版本,則靜默下載新版本,做好更新準備     updateManager.onUpdateReady(function () {      console.log(new Date())      wx.showModal({       title: '更新提示',       content: '新版本已經準備好,是否重啟應用?',       success: function (res) {        if (res.confirm) {         //3. 新的版本已經下載好,調用 applyUpdate 應用新版本并重啟         updateManager.applyUpdate()        } else if (res.cancel) {         //如果需要強制更新,則給出二次彈窗,如果不需要,則這里的代碼都可以刪掉了         wx.showModal({          title: '溫馨提示~',          content: '本次版本更新涉及到新的功能添加,舊版本無法正常訪問的哦~',          success: function (res) {              self.autoUpdate()           return;                    //第二次提示后,強制更新                      if (res.confirm) {            // 新的版本已經下載好,調用 applyUpdate 應用新版本并重啟            updateManager.applyUpdate()           } else if (res.cancel) {            //重新回到版本更新提示            self.autoUpdate()           }          }         })        }       }      })     })     updateManager.onUpdateFailed(function () {      // 新的版本下載失敗      wx.showModal({       title: '已經有新版本了喲~',       content: '新版本已經上線啦~,請您刪除當前小程序,重新搜索打開喲~',      })     })    }   })  } else {   // 如果希望用戶在最新版本的客戶端上體驗您的小程序,可以這樣子提示   wx.showModal({    title: '提示',    content: '當前微信版本過低,無法使用該功能,請升級到最新微信版本后重試。'   })  } }})

更新版本的模擬測試:

1. 微信開發者工具上可以通過「編譯模式」下的「下次編譯模擬更新」開關來調試;

2. 小程序開發版/體驗版沒有「版本」概念,所以無法在開發版/體驗版上測試更版本更新情況;

對于開發者工具,可以這樣驗證測試:

點擊編譯模式設置下拉列表,然后點擊“添加編譯模式”,在自定義編譯條件彈窗界面,點擊下次編譯時模擬更新,然后點擊確定,重新編譯就OK了。

需要注意的是,這種方式模擬更新一次之后就失效了,后邊再測試仍需要對這種編譯模式進行重新設置才可以。

更新提示有延遲?

在開發者工具上測試驗證的時候,更新提示彈窗在小程序界面加載出來五六秒之后才彈出來,這是由于小程序在檢測到有新版本之后,調用UpdateManager.onUpdateReady(function callback)進行版本更新監聽,此時客戶端主動觸發下載(無需開發者觸發),下載成功后回調。也就是說我們上邊的更新提示彈窗是在小程序檢測到新版本并完成新版本下載之后彈出的,所以就有了這幾秒的時間差。這樣的話就很有必要進行再次改善了,至少應該在小程序編譯時檢測到有新版本就應該先給出更新提示,至于新版本下載的準備工作,可以在用戶點擊確認按鈕之后進行,代碼改造如下:

App({ onLaunch: function(options) {  this.autoUpdate() }, autoUpdate: function() {  var self = this  // 獲取小程序更新機制兼容  if (wx.canIUse('getUpdateManager')) {   const updateManager = wx.getUpdateManager()   //1. 檢查小程序是否有新版本發布   updateManager.onCheckForUpdate(function(res) {    // 請求完新版本信息的回調    if (res.hasUpdate) {     //檢測到新版本,需要更新,給出提示     wx.showModal({      title: '更新提示',      content: '檢測到新版本,是否下載新版本并重啟小程序?',      success: function(res) {       if (res.confirm) {        //2. 用戶確定下載更新小程序,小程序下載及更新靜默進行        self.downLoadAndUpdate(updateManager)       } else if (res.cancel) {        //用戶點擊取消按鈕的處理,如果需要強制更新,則給出二次彈窗,如果不需要,則這里的代碼都可以刪掉了        wx.showModal({         title: '溫馨提示~',         content: '本次版本更新涉及到新的功能添加,舊版本無法正常訪問的哦~',         showCancel:false,//隱藏取消按鈕         confirmText:"確定更新",//只保留確定更新按鈕         success: function(res) {          if (res.confirm) {           //下載新版本,并重新應用           self.downLoadAndUpdate(updateManager)          }         }        })       }      }     })    }   })  } else {   // 如果希望用戶在最新版本的客戶端上體驗您的小程序,可以這樣子提示   wx.showModal({    title: '提示',    content: '當前微信版本過低,無法使用該功能,請升級到最新微信版本后重試。'   })  } }, /**  * 下載小程序新版本并重啟應用  */ downLoadAndUpdate: function (updateManager){  var self=this  wx.showLoading();  //靜默下載更新小程序新版本  updateManager.onUpdateReady(function () {   wx.hideLoading()   //新的版本已經下載好,調用 applyUpdate 應用新版本并重啟   updateManager.applyUpdate()  })  updateManager.onUpdateFailed(function () {   // 新的版本下載失敗   wx.showModal({    title: '已經有新版本了喲~',    content: '新版本已經上線啦~,請您刪除當前小程序,重新搜索打開喲~',   })  }) }})

如上,在檢測到小程序有新版本之后,就給出彈窗提示用戶下載新版并重啟小程序,用戶點擊確定按鈕后進行小程序新版本的下載和更新。也為了調用方便,將新版本下載及小程序的重啟應用單獨封裝起來。

這樣,從小程序加載到彈出版本更新彈窗只需要耗費調用新版本檢測API并返回結果的時間(開發者工具測試有2~3秒),雖說還是有一點延遲,但目前也只能這樣了。

總結:

綜上,無論如何,使用小程序版本更新檢測功能都是需要一定時間的(一兩秒的時間已經不算短了哈),如果在檢測這一兩秒中內用戶進行了操作,那么更新提示彈窗則會打斷用戶的操作。但畢竟不是頻繁更新版本,所以這方面還是可以接受的。

另外,下載新的版本包的時候建議loading,這樣用戶就知道是在下載,然后下載完成自動重啟,這樣整個流程就順暢多了。

梳理了下,整了份思維導圖,可以輔助理解:

其他注意事項:

基礎庫最低版本設置:

如果不想做API支持判斷,那么可以給小程序設置最低版本支持。

打開小程序管理后臺-設置-基礎庫最低版本設置,根據現有小程序的訪問情況或者小程序官方提供的數據,設置一個比較大眾化的基礎庫版本就好了,這樣就能進了盡量減少API兼容性判斷,也能促使用戶更新微信版本,以支持小程序正常運行,體驗小程序一些高級功能。

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩欧美国产成人| 懂色av一区二区三区| 欧美国产日韩二区| 欧美肥老太性生活视频| 日韩小视频在线观看| 欧美大尺度激情区在线播放| 国产主播精品在线| 久久精品亚洲精品| y97精品国产97久久久久久| 欧美高清在线播放| 亚洲男人的天堂在线播放| 欧美在线观看一区二区三区| 精品国产美女在线| 色婷婷综合成人av| 日韩av一卡二卡| 欧美色视频日本高清在线观看| 日本精品视频在线观看| 亚洲国产精品久久91精品| 日韩视频免费中文字幕| 亚洲福利在线视频| 日韩在线视频二区| 国产999在线观看| www.亚洲人.com| 国产九九精品视频| 在线日韩第一页| 国产成人激情视频| 欧美高清在线视频观看不卡| 亚洲网站在线播放| 国产精品视频26uuu| 亚洲免费精彩视频| 91免费精品视频| 久久精品国产96久久久香蕉| 亚洲va欧美va国产综合久久| 国语自产在线不卡| 日本一本a高清免费不卡| 亚洲精品久久久久中文字幕二区| 亚洲天堂av在线免费| 久久精品国产一区二区三区| 国产精品99久久久久久久久久久久| 欧美乱大交xxxxx另类电影| 91国内在线视频| 国产成人+综合亚洲+天堂| 久久国产精品视频| 国产91精品不卡视频| 欧美中文字幕精品| 日产日韩在线亚洲欧美| 高清亚洲成在人网站天堂| 中文字幕自拍vr一区二区三区| 久久在线免费观看视频| 欧美亚洲成人网| 久久久亚洲精品视频| 亚洲女人被黑人巨大进入al| 国产日韩一区在线| 亚洲电影在线观看| 久久亚洲电影天堂| 亚洲xxxx视频| 欧美尺度大的性做爰视频| 91热福利电影| 久久久久久亚洲精品| 成人黄色免费网站在线观看| 久久91亚洲精品中文字幕奶水| 韩国国内大量揄拍精品视频| 成人黄色午夜影院| 亚洲精品中文字幕av| 国产91免费观看| 久久人人爽人人爽爽久久| 午夜精品久久久久久久久久久久| 亚洲高清免费观看高清完整版| 丁香五六月婷婷久久激情| 欧美激情女人20p| 亚洲性猛交xxxxwww| 欧美在线视频网站| 国产一区玩具在线观看| 国产精品国产亚洲伊人久久| 在线观看中文字幕亚洲| 国产欧美亚洲精品| 中文字幕亚洲欧美| 在线日韩中文字幕| 日本一欧美一欧美一亚洲视频| 欧美国产视频一区二区| 久久亚洲欧美日韩精品专区| 亚洲国产婷婷香蕉久久久久久| 日韩av在线看| 5278欧美一区二区三区| 亚洲国产精品悠悠久久琪琪| 亚洲片在线观看| 国产精品久久久亚洲| 亚洲va久久久噜噜噜久久天堂| 国模精品视频一区二区| 日韩免费电影在线观看| 4438全国亚洲精品在线观看视频| 亚洲一区二区三区在线视频| 国产一区二区三区在线| 久热精品视频在线观看一区| 欧美一级黄色网| 91久久精品日日躁夜夜躁国产| 国产成人欧美在线观看| 欧美另类老女人| 亚洲一区二区三区在线免费观看| 成人黄色免费网站在线观看| 1769国产精品| 欧美中文在线观看| 欧美成人精品一区二区三区| 美女少妇精品视频| 色噜噜国产精品视频一区二区| 日韩av手机在线观看| 亚洲免费av网址| 国产日韩欧美影视| 国产精品夜色7777狼人| 性亚洲最疯狂xxxx高清| 亚洲国产婷婷香蕉久久久久久| 久久综合伊人77777尤物| 欧美日韩亚洲天堂| 欧美乱大交xxxxx另类电影| 日韩av免费网站| 亚洲一区二区久久久| 久久影视免费观看| 中文字幕日韩精品在线| 日韩亚洲欧美中文在线| 国产suv精品一区二区| 91黑丝在线观看| 亚洲成人免费在线视频| 欧美激情手机在线视频| 欧美激情免费看| 国产成人91久久精品| 成人精品一区二区三区电影黑人| 日韩国产欧美精品在线| 久久久亚洲精品视频| 国产精品高清网站| 欧美大片在线免费观看| 日韩精品免费一线在线观看| 亚洲无限乱码一二三四麻| 国产在线拍偷自揄拍精品| 国产精品美女久久久免费| 91免费看片在线| 91精品国产91久久| 57pao成人永久免费视频| www.久久色.com| 欧美孕妇毛茸茸xxxx| 日本高清视频精品| 日韩美女视频中文字幕| 97精品在线视频| 精品国产精品三级精品av网址| 亚洲国产精品电影在线观看| 欧美日韩在线观看视频小说| 国产精品丝袜久久久久久不卡| 成人国产精品色哟哟| 在线观看免费高清视频97| 欧美成人精品h版在线观看| 一区二区三区动漫| 国产精品观看在线亚洲人成网| 91国在线精品国内播放| 亚洲电影成人av99爱色| 亚洲成人久久一区| 26uuu亚洲国产精品| 国产人妖伪娘一区91| 国产精品久久久av久久久| 国产欧美精品在线播放| 欧美专区在线视频| 午夜精品国产精品大乳美女| 欧美日韩国产一中文字不卡| 欧美中文字幕视频在线观看| 欧美激情喷水视频| 欧美日韩亚洲一区二|