小程序:兼容

来自CloudWiki
跳转至: 导航搜索

兼容

小程序的宿主环境一直在迭代更新,提供更多的能力给开发者去完成更多的事情,所以你的小程序会运行在不同版本的宿主环境下。为了让你的小程序在不同环境下都能提供相应的服务,我们需要来了解一下在小程序中如何实现兼容办法。 我们可能需要针对不同手机进行程序上的兼容,此时可以使用 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   // 用户字体大小设置
 }
*/

随着宿主环境的更新,新版本的宿主环境会提供一些新的API,你可以通过判断此API是否存在来做程序上的兼容。

代码清单3-23 通过判断API是否存在做兼容

if (wx.openBluetoothAdapter) {

 wx.openBluetoothAdapter()

} else {

 // 如果希望用户在最新版本的客户端上体验您的小程序,可以这样子提示
 wx.showModal({
   title: '提示',
   content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。'
 })

}

小程序还提供了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版本宿主环境的微信用户打开你的小程序的时候,微信客户端会显示当前小程序不可用,并且提示用户应该去升级微信客户端。