微信小程序 低版本兼容

2022-04-27 11:36 更新

兼容

小程序的功能不斷的增加,但是舊版本的微信客戶端并不支持新功能,所以在使用這些新能力的時(shí)候需要做兼容。

開發(fā)者可以通過以下方式進(jìn)行低版本的兼容:

1. 版本號(hào)比較

微信客戶端和小程序基礎(chǔ)庫的版本號(hào)風(fēng)格為 Major.Minor.Patch(主版本號(hào).次版本號(hào).修訂版本號(hào))。

文檔中會(huì)在組件,API等頁面描述中帶上各個(gè)功能所要求的最低基礎(chǔ)庫版本號(hào)。

開發(fā)者可以在小程序中通過調(diào)用 wx.getSystemInfo 或者 wx.getSystemInfoSync 獲取到當(dāng)前小程序運(yùn)行的基礎(chǔ)庫的版本號(hào)。通過版本號(hào)比較的方式進(jìn)行運(yùn)行低版本兼容邏輯。

版本號(hào)比較適用于所有情況。部分場(chǎng)景下也可以使用后面提到的方法完成。

注意:不要直接使用字符串比較的方法進(jìn)行版本號(hào)比較。

版本號(hào)比較可以參考以下代碼:

function compareVersion(v1, v2) {
  v1 = v1.split('.')
  v2 = v2.split('.')
  const len = Math.max(v1.length, v2.length)

  while (v1.length < len) {
    v1.push('0')
  }
  while (v2.length < len) {
    v2.push('0')
  }

  for (let i = 0; i < len; i++) {
    const num1 = parseInt(v1[i])
    const num2 = parseInt(v2[i])

    if (num1 > num2) {
      return 1
    } else if (num1 < num2) {
      return -1
    }
  }

  return 0
}

compareVersion('1.11.0', '1.9.9') // 1
const version = wx.getSystemInfoSync().SDKVersion

if (compareVersion(version, '1.1.0') >= 0) {
  wx.openBluetoothAdapter()
} else {
  // 如果希望用戶在最新版本的客戶端上體驗(yàn)?zāi)男〕绦?,可以這樣子提示
  wx.showModal({
    title: '提示',
    content: '當(dāng)前微信版本過低,無法使用該功能,請(qǐng)升級(jí)到最新微信版本后重試。'
  })
}

2. API 存在判斷

對(duì)于新增的 API,可以通過判斷該API是否存在來判斷是否支持用戶使用的基礎(chǔ)庫版本。例如:

if (wx.openBluetoothAdapter) {
  wx.openBluetoothAdapter()
} else {
  // 如果希望用戶在最新版本的客戶端上體驗(yàn)?zāi)男〕绦?,可以這樣子提示
  wx.showModal({
    title: '提示',
    content: '當(dāng)前微信版本過低,無法使用該功能,請(qǐng)升級(jí)到最新微信版本后重試。'
  })
}

3. wx.canIUse

除了直接通過版本號(hào)判斷,也可以通過 wx.canIUse 來判斷是否可以在該基礎(chǔ)庫版本下直接使用。例如:

API 參數(shù)或返回值

對(duì)于 API 的參數(shù)或者返回值有新增的參數(shù),可以判斷用以下代碼判斷。

wx.showModal({
  success: function(res) {
    if (wx.canIUse('showModal.success.cancel')) {
      console.log(res.cancel)
    }
  }
})

組件

對(duì)于組件,新增的組件或?qū)傩栽谂f版本上不會(huì)被處理,不過也不會(huì)報(bào)錯(cuò)。如果特殊場(chǎng)景需要對(duì)舊版本做一些降級(jí)處理,可以這樣子做。

Page({
  data: {
    canIUse: wx.canIUse('cover-view')
  }
})
<video controls="{{!canIUse}}">
  <cover-view wx:if="{{canIUse}}">play</cover-view>
</video>
canIUse 的數(shù)據(jù)文件隨基礎(chǔ)庫進(jìn)行更新,新版本中的新功能可能出現(xiàn)遺漏的情況,建議開發(fā)者在使用時(shí)提前測(cè)試。

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

需要 iOS 6.5.8 / 安卓 6.5.7 及以上版本微信客戶端支持

為便于開發(fā)者解決低版本基礎(chǔ)庫無法兼容小程序的新功能的問題,開發(fā)者可設(shè)置小程序最低基礎(chǔ)庫版本要求。

開發(fā)者可以登錄小程序管理后臺(tái),進(jìn)入「設(shè)置 - 基本設(shè)置 - 基礎(chǔ)庫最低版本設(shè)置」進(jìn)行配置。在配置前,開發(fā)者可查看近 30 天內(nèi)訪問當(dāng)前小程序的用戶所使用的基礎(chǔ)庫版本占比,以幫助開發(fā)者了解當(dāng)前用戶使用的情況。

設(shè)置后,若用戶基礎(chǔ)庫版本低于設(shè)置值,則無法正常打開小程序,并提示用戶更新客戶端版本。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)