ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[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版本宿主环境的微信用户打开你的小程序的时候,微信客户端会显示当前小程序不可用,并且提示用户应该去升级微信客户端。