[TOC]
## 2.6 兼容
1. **使用 `wx.getSystemInfo` 或者 `wx.getSystemInfoSync`** 來獲取手機品牌、操作系統版本號、微信版本號以及小程序基礎庫版本號等,通過這個信息,我們可以針對不同平臺做差異化的服務。
代碼清單3-22 通過wx.getSystemInfoSync獲取宿主環境信息
~~~
wx.getSystemInfoSync()
/*
{
brand: "iPhone", // 手機品牌
model: "iPhone 6", // 手機型號
platform: "ios", // 客戶端平臺
system: "iOS 9.3.4", // 操作系統版本
version: "6.5.23", // 微信版本號
SDKVersion: "1.7.0", // 小程序基礎庫版本
language: "zh_CN", // 微信設置的語言
pixelRatio: 2, // 設備像素比
screenWidth: 667, // 屏幕寬度
screenHeight: 375, // 屏幕高度
windowWidth: 667, // 可使用窗口寬度
windowHeight: 375, // 可使用窗口高度
fontSizeSetting: 16 // 用戶字體大小設置
}
*/
~~~
2. **判斷API是否存在**來做程序上的兼容。
代碼清單3-23 通過判斷API是否存在做兼容
~~~
if (wx.openBluetoothAdapter) {
wx.openBluetoothAdapter()
} else {
// 如果希望用戶在最新版本的客戶端上體驗您的小程序,可以這樣子提示
wx.showModal({
title: '提示',
content: '當前微信版本過低,無法使用該功能,請升級到最新微信版本后重試。'
})
}
~~~
3. **使用`wx.canIUse`** 這個API,用于判斷接口或者組件在當前宿主環境是否可用,其參數格式為: `${API}.${method}.${param}.${options}或者${component}.${attribute}.${option}`
各個段的含義如下:
* ${API} 代表 API 名字
* ${method} 代表調用方式,有效值為return, success, object, callback
* ${param} 代表參數或者返回值
* ${options} 代表參數的可選值
* ${component} 代表組件名字
* ${attribute} 代表組件屬性
* ${option} 代表組件屬性的可選值
調用的示例代碼如下。
代碼清單3-24 wx.canIUse調用示例
~~~
// 判斷接口及其參數在宿主環境是否可用
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')
~~~
我們可以選擇合適的判斷方法來做小程序的向前兼容,以保證我們的小程序在舊版本的微信客戶端也能工作正常。
在不得已的情況下(小程序強依賴某個新的API或者組件時),還可以通過在小程序管理后臺設置“基礎庫最低版本設置”來達到不向前兼容的目的。
例如你選擇設置你的小程序只支持1.5.0版本以上的宿主環境,那么當運行著1.4.0版本宿主環境的微信用戶打開你的小程序的時候,微信客戶端會顯示當前小程序不可用,并且提示用戶應該去升級微信客戶端。
- 微信
- 小程序
- 1. 代碼組成
- 1.1 JSON配置--'*.json'文件
- 1.2 WXML模板--'*.wxml'文件
- 1.3 WXSS樣式--'*.wxss'文件
- 1.4 JavaScript腳本--'*.js'文件
- 2. 客戶端運行
- 2.1 邏輯層和渲染層
- 2.1.1 邏輯層--App Service
- 2.1.2 渲染層/視圖層--View
- 2.1.3 通信模型
- 2.1.4 數據驅動
- 2.1.5 雙線程下的界面渲染
- 2.2 程序與頁面
- 2.3 組件
- 2.4 API
- 2.5 事件
- 2.6 兼容
- 3. 應用設計
- 3.1 Flex布局
- 3.2 界面常見的交互反饋
- 3.3 發起HTTPS網絡通信--wx.request
- 3.4 微信登錄
- 3.5 本地數據緩存
- 3.6 設備能力
- 4. 小程序的協同工作和發布
- 4.1 協同工作
- 4.2 用戶體驗審視
- 4.3 發布
- 4.4 運營
- 5. 底層框架
- 5.1 雙線程模型
- 5.2 組件系統--Exparser框架
- 5.3 原生組件
- 5.4 小程序與客戶端通信原理
- 6. 運行和性能優化
- 6.1 啟動--代碼加載
- 6.2 頁面準備
- 6.3 數據通信
- 6.4 視圖層渲染
- 6.5 原生組件通信
- 7. 小程序基礎庫的更新迭代
- 8. 微信開發者工具
- 騰訊云支持
- wafer
- Wafer2 快速開發 Demo - PHP
- WXAPI
- api列表