6.1 基础API
6.1.2 兼容性检查API
解决兼容性问题除了判断 用户的微信版本,还可以使用兼容性API直接判断小程序的API、回调、参数和组件是否在当前版本可用。它的具体使用方式如下:
boolean wx.canIUse(string schema)
可以通过wx.canIUse接口返回的boolean值来判断当前版本是否兼容某个功能。string类型的schema入参变量需要有开发者来构造,它有两种格式,分别如下:
${API}.${method}.${param}.${options} // 用于判断API兼容性
${component}.${attributr}.${option} // 用于判断组件兼容性
其中${API}代表API名字;${method}代表调用方式,有效值为return,success,object,callback;${param}代表参数或者返回值;${options} 代表参数的可选值;
${component}代表组件名称;${attributr}代表组件属性;${option} 代表组件属性的可选值。
下面是使用兼容性检查API的例子:
wx.canIUse('openBluetoothAdapter') // 是否支持 wx.openBluetoothAdapter接口
wx.canIUse('getSystemInfoSync.return.screenWidth') // 系统信息是否返回screenWidth
wx.canIUse('getSystemInfo.success.screenWidth') // 系统信息回调是否包含screenWidth
wx.canIUse('showToast.object.image') // wx.showToast 参数是否支持传入image属性
wx.canIUse('onCompassChange.callback.direction') // 罗盘回调函数参数是否包含direction
wx.canIUse('request.object.method.GET') // wx.request参数的method是否支持GET值
wx.canIUse('live-player') // 是否支持live-player组件
wx.canIUse('text.selectable') // 是否支持text组件的selectable属性
wx.canIUse('button.open-type.contact') // button组件open-type属性是否支持contact
6.1.3 版本更新API
管理员在微信公众平台后台发布新版本的小程序后,无法立刻影响所有现网用户。如果某个用户本地有小程序的历史版本,新版本发布后的一段时间内打开的可能还是旧版本,最坏情况24小时。
小程序检测更新的逻辑是微信App实现的。24小时太久,开发者可以使用版本更新API让小程序主动更新到最新的版本。版本更新API从基础库1.9.0开始支持。
使用版本更新API需要获取小程序的版本更新管理器,代码如下:
const updateManager = wx.getUpdateManager()
接下来调用updateManager对象中的方法,让小程序实现版本更新的功能。
updateManager有四个方法,分别如下:
updateManager.onCheckForUpdate(function callback)监听向微信后台请求检查更新结果事件。
updateManager.onUpdateReady(function callback)监听小程序有版本更新事件,客户端会主动触发下载更新,下载成功后调用callback函数
updateManager.applyUpdate()强制小程序重启并使用新版本
updateManager.onUpdateFailed(function callback)监听小程序更新失败事件
以下为版本更新API的使用示例:
const updateManager = wx.getUpdateManager()
updateManager.onCheckForUpdate(function (res) {
console.log(res.hasUpdate) // 请求完新版本信息的回调
})
updateManager.onUpdateReady(function () {
// 新的版本已经下载好,提示用户是否立即重启小程序应用更新
wx.showModal({
title: '更新提示',
content: '新版本已经准备好,是否重启应用?',
success: function (res) {
if (res.confirm) {
updateManager.applyUpdate() // 调用applyUpdate并更新小程序
}
}
})
})
updateManager.onUpdateFailed(function (){
// 新版本下载失败
})
网友评论