欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

微信小程序發(fā)布新版本時(shí)自動(dòng)提示用戶更新的方法

 更新時(shí)間:2019年06月07日 11:32:48   作者:逍遙云天  
這篇文章主要介紹了微信小程序發(fā)布新版本時(shí)自動(dòng)提示用戶更新的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用小程序具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

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

官方給的示例代碼:

const updateManager = 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(res) {
   if (res.confirm) {
    // 新的版本已經(jīng)下載好,調(diào)用 applyUpdate 應(yīng)用新版本并重啟
    updateManager.applyUpdate()
   }
  }
 })
})

updateManager.onUpdateFailed(function () {
 // 新版本下載失敗
})

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

另一方面,如果當(dāng)前版本更新有重大調(diào)整,一定需要用戶更新,那么可以在用戶點(diǎn)擊取消的回調(diào)中給出提示,并重新進(jìn)入版本提示流程。如下圖,在上邊的更新提示中,用戶點(diǎn)擊取消,則彈出下面提示彈窗,用戶點(diǎn)擊確定,則更新版本,點(diǎn)擊取消,則重新調(diào)用上邊的更新提示??傊?,用戶只有更新了,才能正常訪問(wèn)小程序(如非必須,建議慎用)。

改善后的代碼:

//app.js

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

更新版本的模擬測(cè)試:

1. 微信開發(fā)者工具上可以通過(guò)「編譯模式」下的「下次編譯模擬更新」開關(guān)來(lái)調(diào)試;

2. 小程序開發(fā)版/體驗(yàn)版沒(méi)有「版本」概念,所以無(wú)法在開發(fā)版/體驗(yàn)版上測(cè)試更版本更新情況;

對(duì)于開發(fā)者工具,可以這樣驗(yàn)證測(cè)試:

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

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

更新提示有延遲?

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

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

如上,在檢測(cè)到小程序有新版本之后,就給出彈窗提示用戶下載新版并重啟小程序,用戶點(diǎn)擊確定按鈕后進(jìn)行小程序新版本的下載和更新。也為了調(diào)用方便,將新版本下載及小程序的重啟應(yīng)用單獨(dú)封裝起來(lái)。

這樣,從小程序加載到彈出版本更新彈窗只需要耗費(fèi)調(diào)用新版本檢測(cè)API并返回結(jié)果的時(shí)間(開發(fā)者工具測(cè)試有2~3秒),雖說(shuō)還是有一點(diǎn)延遲,但目前也只能這樣了。

總結(jié):

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

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

梳理了下,整了份思維導(dǎo)圖,可以輔助理解:

其他注意事項(xiàng):

基礎(chǔ)庫(kù)最低版本設(shè)置:

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

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

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • 小程序?qū)崿F(xiàn)頁(yè)面給自定義組件賦值

    小程序?qū)崿F(xiàn)頁(yè)面給自定義組件賦值

    這篇文章主要為大家詳細(xì)介紹了小程序?qū)崿F(xiàn)頁(yè)面給自定義組件賦值,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • 淺談javascript中的作用域

    淺談javascript中的作用域

    首先說(shuō)明一下:Js中的作用域不同于其他語(yǔ)言的作用域,要特別注意
    2012-04-04
  • JavaScript Math.round() 方法

    JavaScript Math.round() 方法

    math.round()方法將對(duì)參數(shù)進(jìn)行四舍五入操作,對(duì)js math.round相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧
    2015-12-12
  • javascript間隔刷新的簡(jiǎn)單實(shí)例

    javascript間隔刷新的簡(jiǎn)單實(shí)例

    這篇文章介紹了javascript間隔刷新的簡(jiǎn)單實(shí)例,有需要的朋友可以參考一下
    2013-11-11
  • js精確的加減乘除實(shí)例

    js精確的加減乘除實(shí)例

    下面小編就為大家?guī)?lái)一篇js精確的加減乘除實(shí)例,具有非常好的參考價(jià)值。希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • 原生js實(shí)現(xiàn)圖片層疊輪播切換效果

    原生js實(shí)現(xiàn)圖片層疊輪播切換效果

    這篇文章主要為大家詳細(xì)介紹了原生js實(shí)現(xiàn)圖片層疊輪播切換效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-02-02
  • js獲取css的各種樣式并且設(shè)置他們的方法

    js獲取css的各種樣式并且設(shè)置他們的方法

    下面小編就為大家?guī)?lái)一篇js獲取css的各種樣式并且設(shè)置他們的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • 比較常見的javascript中定義函數(shù)的區(qū)別

    比較常見的javascript中定義函數(shù)的區(qū)別

    js定義函數(shù)有好多種,但是他們之間的區(qū)別,大家都了解嗎,接下來(lái),小編通過(guò)本文給大家介紹比較常見的js中定義函數(shù)的區(qū)別,對(duì)本文感興趣的朋友一起看看吧
    2015-11-11
  • prototype class詳解

    prototype class詳解

    prototype class詳解...
    2006-09-09
  • 小程序?qū)崿F(xiàn)圖片預(yù)覽裁剪插件

    小程序?qū)崿F(xiàn)圖片預(yù)覽裁剪插件

    這篇文章主要為大家詳細(xì)介紹了小程序?qū)崿F(xiàn)圖片預(yù)覽裁剪插件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-11-11

最新評(píng)論