小程序的宿主环境一直在迭代更新,提供更多的能力给开发者去完成更多的事情,所以你的小程序会运行在不同版本的宿主环境下。为了让你的小程序在不同环境下都能提供相应的服务,我们需要来了解一下在小程序中如何实现兼容办法。

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

微信小程序如何实现兼容----wx.getSystemInfoSync、 wx.getSystemInfo、wx.canIUse相关推荐

  1. 微信小程序入坑教程二十一:使用wx.saveImageToPhotosAlbum保存图片时通过检测scope.writePhotosAlbum权限来提醒用户是否需要授权

    摘要: 在昨天的文章<微信小程序入坑教程二十:生成海报前使用wx.downloadFile或wx.getImageInfo时潜在的坑>中提到了用户授权一事,scope.writePhoto ...

  2. 自定义微信小程序tabBar,兼容iPhone异形全面屏

    需求 开发微信商城会员中心,tabBar有首页及用户中心,当用户没有登录时点击页面任意位置均弹出登录窗口.但是自带的微信tabBar无法被弹出的遮罩层覆盖,从而可以在两个tab之间切换. 解决 自己手 ...

  3. 微信小程序自定义弹出框组件,模拟wx.showModal

    微信小程序开发交流qq群   173683895 效果图: 代码 wxml <view wx:if='{{showModal}}'><view class='mask_layer' ...

  4. 微信小程序怎样创建formdata对象,并通过 wx.request 发送file文件

    一.场景 业务需求,微信小程序需要选择本地的一张照片file,通过接口发送给服务器. 问题: 因涉及到域名安全问题,不能使用 wx.uploadFile . 微信本身没有FormData对象,无法使用 ...

  5. 微信小程序入门教程---列表渲染多层嵌套循环及wx:key的使用(双层for循环)

    前言 入门教程之列表渲染多层嵌套循环,目前官方的文档里,主要是一维数组列表渲染的案例,还是比较简单单一,给刚入门的童鞋还是无从入手的感觉. <view wx:for="{{items} ...

  6. 【微信小程序】本地缓存保持登录状态之 wx.setStorageSync() 使用技巧

    简介 微信小程序提供了一个如同浏览器 cookie 本地缓存方法,就是 wx.setStorageSync() . 注意,该方法是同步请求,还有个异步请求的方法是 wx.setStorage(),参考 ...

  7. 微信小程序调整的获取用户信息API接口wx.getUserProfile

    对于微信小程序更新后的wx.getUserProfile怎么用?小程序怎么获取用户信息 getUserProfile接口文档:https://developers.weixin.qq.com/mini ...

  8. 微信小程序开发——消除Now you can provide attr `wx:key` for a `wx:for` to improve performance.

    在开发微信小程序的是遇到了WXML Runtime warning:Now you can provide attrwx:key for awx:forto improve performance. ...

  9. uniapp开发写了key 但微信小程序时警告-Now you can provide attr `wx:key` for a `wx:for` to improve performance.

    我这里碰见了两种造成这个问题的错误 第一种 :key="Ditem.did" 给了key值,但是变量写错,key值是undefined, 解决方案,给一个正确的值,而且值唯一 第二 ...

最新文章

  1. 第一章 1 常用库之time
  2. python3(十一)内置模块和类型转换
  3. Sort List[leetcode] 由归并排序的递归和循环,到本题的两种解法
  4. 梯度与散度与拉普拉斯算子
  5. 国内设计灵感网站,设计师学习必备
  6. 在MongoDB的MapReduce上踩过的坑
  7. PJblog跨站漏洞利用及修补
  8. 不是三维——软件项目的设计、开发与管理
  9. Flutter 判断横竖屏(含尺寸、方向改变时触发)
  10. 解决OneNote导出PDF图片模糊的问题
  11. Java中的偏向锁,轻量级锁, 重量级锁解析
  12. 怎么视频提取音频文件?分享这3种简单实用的提取方法
  13. unity中获取FPS
  14. CSS深入理解z-index(z-index相关知识总结)
  15. 最新的CC2642R与CC2640、CC2640R2F有什么改进?
  16. 互联网金融产品实战——安全开发篇
  17. unity2D学习(10)创建敌人、为敌人编写简单的AI
  18. 图片标签,内联框架,音视频
  19. ECharts的高级使用(主题、调色板、颜色渐变)
  20. Linux下xmapp安装

热门文章

  1. 第一届 xdef 会议日程
  2. java for循环二维数组_java二维数组赋值for循环的执行过程?
  3. 用real vnc连接服务器
  4. [NOIP2011 提高组] 铺地毯
  5. Android调用系统相机程序
  6. cmd imp导入dmp文件_imp和exp命令导入和导出.dmp文件
  7. html单选按钮禁用,使用jQuery禁用单选按钮
  8. 看看是你的笑话吗!!
  9. 基于FPGA的移相波束形成verilog实现
  10. 谁说菜鸟不会数据分析电子书