微信小程序如何实现兼容----wx.getSystemInfoSync、 wx.getSystemInfo、wx.canIUse
小程序的宿主环境一直在迭代更新,提供更多的能力给开发者去完成更多的事情,所以你的小程序会运行在不同版本的宿主环境下。为了让你的小程序在不同环境下都能提供相应的服务,我们需要来了解一下在小程序中如何实现兼容办法。
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相关推荐
- 微信小程序入坑教程二十一:使用wx.saveImageToPhotosAlbum保存图片时通过检测scope.writePhotosAlbum权限来提醒用户是否需要授权
摘要: 在昨天的文章<微信小程序入坑教程二十:生成海报前使用wx.downloadFile或wx.getImageInfo时潜在的坑>中提到了用户授权一事,scope.writePhoto ...
- 自定义微信小程序tabBar,兼容iPhone异形全面屏
需求 开发微信商城会员中心,tabBar有首页及用户中心,当用户没有登录时点击页面任意位置均弹出登录窗口.但是自带的微信tabBar无法被弹出的遮罩层覆盖,从而可以在两个tab之间切换. 解决 自己手 ...
- 微信小程序自定义弹出框组件,模拟wx.showModal
微信小程序开发交流qq群 173683895 效果图: 代码 wxml <view wx:if='{{showModal}}'><view class='mask_layer' ...
- 微信小程序怎样创建formdata对象,并通过 wx.request 发送file文件
一.场景 业务需求,微信小程序需要选择本地的一张照片file,通过接口发送给服务器. 问题: 因涉及到域名安全问题,不能使用 wx.uploadFile . 微信本身没有FormData对象,无法使用 ...
- 微信小程序入门教程---列表渲染多层嵌套循环及wx:key的使用(双层for循环)
前言 入门教程之列表渲染多层嵌套循环,目前官方的文档里,主要是一维数组列表渲染的案例,还是比较简单单一,给刚入门的童鞋还是无从入手的感觉. <view wx:for="{{items} ...
- 【微信小程序】本地缓存保持登录状态之 wx.setStorageSync() 使用技巧
简介 微信小程序提供了一个如同浏览器 cookie 本地缓存方法,就是 wx.setStorageSync() . 注意,该方法是同步请求,还有个异步请求的方法是 wx.setStorage(),参考 ...
- 微信小程序调整的获取用户信息API接口wx.getUserProfile
对于微信小程序更新后的wx.getUserProfile怎么用?小程序怎么获取用户信息 getUserProfile接口文档:https://developers.weixin.qq.com/mini ...
- 微信小程序开发——消除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. ...
- uniapp开发写了key 但微信小程序时警告-Now you can provide attr `wx:key` for a `wx:for` to improve performance.
我这里碰见了两种造成这个问题的错误 第一种 :key="Ditem.did" 给了key值,但是变量写错,key值是undefined, 解决方案,给一个正确的值,而且值唯一 第二 ...
最新文章
- 第一章 1 常用库之time
- python3(十一)内置模块和类型转换
- Sort List[leetcode] 由归并排序的递归和循环,到本题的两种解法
- 梯度与散度与拉普拉斯算子
- 国内设计灵感网站,设计师学习必备
- 在MongoDB的MapReduce上踩过的坑
- PJblog跨站漏洞利用及修补
- 不是三维——软件项目的设计、开发与管理
- Flutter 判断横竖屏(含尺寸、方向改变时触发)
- 解决OneNote导出PDF图片模糊的问题
- Java中的偏向锁,轻量级锁, 重量级锁解析
- 怎么视频提取音频文件?分享这3种简单实用的提取方法
- unity中获取FPS
- CSS深入理解z-index(z-index相关知识总结)
- 最新的CC2642R与CC2640、CC2640R2F有什么改进?
- 互联网金融产品实战——安全开发篇
- unity2D学习(10)创建敌人、为敌人编写简单的AI
- 图片标签,内联框架,音视频
- ECharts的高级使用(主题、调色板、颜色渐变)
- Linux下xmapp安装