微信小程序兼容

微信小程序在功能不斷升級(jí)的過程中經(jīng)常會(huì)發(fā)布一些新的組件和API,但是這些組件和API僅支持高版本,低版本的微信無法使用,因此需要進(jìn)行兼容處理。首先,當(dāng)我們在使用一個(gè)組件或API時(shí)需要先查看其官方文檔上的描述頁,上面會(huì)帶有各個(gè)功能所支持的版本,然后再使用以下方法進(jìn)行兼容:

1、通過wx.getSystemInfo或者wx.getSystemInfoSync獲取到小程序的基礎(chǔ)庫版本號(hào)SDKVersion,與某功能所支持的版本進(jìn)行比較。另外SDKVersion也是1.1.0版本庫才引入的屬性,所以對(duì)于1.1.0以下的版本該字段為undefined,不過因?yàn)樾碌墓δ芡?.1.0及以上版本引入的,所以也可以用于比較版本。

例:
wx.getSystemInfo({
  success: function(res) {
    console.log(res.SDKVersion)
  }
})

另外getSystemInfo還能獲取以下信息:

model    手機(jī)型號(hào)     
pixelRatio    設(shè)備像素比     
screenWidth    屏幕寬度    1.1.0
screenHeight    屏幕高度    1.1.0
windowWidth    可使用窗口寬度     
windowHeight    可使用窗口高度     
language    微信設(shè)置的語言     
version    微信版本號(hào)     
system    操作系統(tǒng)版本     
platform    客戶端平臺(tái)     
SDKVersion    客戶端基礎(chǔ)庫版本    1.1.0

2、通過wx.canIUse(String)判斷小程序的API,回調(diào),參數(shù),組件等是否在當(dāng)前版本可用。
String參數(shù)說明: 使用${API}.${method}.${param}.${options}或者${component}.${attribute}.${option}方式來調(diào)用:
${API} 代表 API 名字
${method} 代表調(diào)用方式,有效值為return, success, object, callback
${param} 代表參數(shù)或者返回值
${options} 代表參數(shù)的可選值
${component} 代表組件名字
${attribute} 代表組件屬性
${option} 代表組件屬性的可選值

例:
wx.canIUse('openBluetoothAdapter')
wx.canIUse('getSystemInfoSync.return.screenWidth')
wx.canIUse('getSystemInfo.success.screenWidth')
wx.canIUse('showToast.object.image')
wx.canIUse('onCompassChange.callback.direction')
wx.canIUse('request.object.method.GET')
wx.canIUse('contact-button')
wx.canIUse('text.selectable')
wx.canIUse('button.open-type.contact')

需要注意的是 wx.canIUse 這個(gè) api 本身也是需要判斷是否支持的,可以先通過 if(wx.canIUse) 判斷其是否支持,然后再使用 wx.canIUse 判斷其他的屬性是否支持。

3、對(duì)于新增的API最簡單的兼容方式是直接通過if(api)的方式判斷該能否調(diào)用:

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

例2:
加載過程中的進(jìn)度框,可以避免用戶在加載過程中進(jìn)行操作導(dǎo)致混亂。
function showLoading(message) {
  if (wx.showLoading) {
    // 基礎(chǔ)庫 1.1.0 微信6.5.6版本開始支持,低版本需做兼容處理
    wx.showLoading({
      title: message,
      mask: true
    });
  } else {
    // 低版本采用Toast兼容處理并將時(shí)間設(shè)為20秒以免自動(dòng)消失
    wx.showToast({
      title: message,
      icon: 'loading',
      mask: true,
      duration: 20000
    });
  }
}

function hideLoading() {
  if (wx.hideLoading) {
    // 基礎(chǔ)庫 1.1.0 微信6.5.6版本開始支持,低版本需做兼容處理
    wx.hideLoading();
  } else {
    wx.hideToast();
  }
}

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

wx.showModal({
    success: function(res) {
        if (wx.canIUse('showModal.cancel')) {
            console.log(res.cancel)
        }
    }
})
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本文我們來談?wù)勎⑿判〕绦蛳到y(tǒng)兼容性的那些坑。 微信小程序兼容性問題 微信小程序發(fā)布一周多了,兼容性問題,特別是 A...
    kamidox閱讀 28,661評(píng)論 1 21
  • 給提問的開發(fā)者的建議:提問之前先查詢 文檔、通過社區(qū)右上角搜索搜索已經(jīng)存在的問題。 寫一個(gè)簡明扼要的標(biāo)題,并且...
    極樂叔閱讀 14,625評(píng)論 0 3
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,039評(píng)論 25 709
  • 這些天一直有種空虛感,就是每天計(jì)劃要學(xué)習(xí)和成長自己的內(nèi)容被每天的瑣事或者是主觀上并沒有主動(dòng)的爭取更多的時(shí)間去成...
    史真如閱讀 117評(píng)論 0 0
  • GitHub地址:https://github.com/LuochuanAD/OC-LCTableViewCell...
    luochuanAD閱讀 547評(píng)論 0 1

友情鏈接更多精彩內(nèi)容