扩展 canIUse
canIUse API 用来判断智能小程序的 API ,回调,参数,组件等是否在当前版本和当前系统下可用,具体可参见 canIUse 的官方文档。
原理
智能小程序运行时会将 swan-extension 模块中 getCanIUseMap 方法返回的宿主的 canIUseMap 合并到最终的 map 当中去,当小程序开发者调用 canIUse API 判断某个 API 、回调、参数、组件等是否可用时,将使用此 map 进行判断。
扩展方法
在 swan-extension 模块的 getCanIUseMap 的返回值中返回宿主定义的 canIUseMap,具体如下:
1 | define('swan-extension', ['swan', 'boxjs'], function (require, module, exports, define, swan, boxjs) { |
canIUseMap 组成说明
canIUseMap 分为 common、ios 和 android 三部分,用于支持不同系统下的判断。其中:common 是 iOS 和 Android 均支持的 API 和组件;ios 是仅 iOS 支持的 API 和组件;android 是仅 Android 支持的 API 和组件。
canIUseMap 的格式举例如下:
1 | const canIUseMap = { |
canIUseMap 数据结构说明
API/类
- 若 API 无入参,以 getFileSystemManager 为例:
1
getFileSystemManager: {}
- 若 API 有入参且不是 Object 类型,以 setStorageSync 为例:
1
2
3
4setStorageSync: {
key: {},
data: {}
} 若 API 的入参为 Object 类型且此 Object 的名字为 object,以 setStorage 为例:
注:success、fail 和 complete 也是入参,这三个入参不支持校验,因此,即使存在这三个入参也无需写入 object 中。
1
2
3
4
5
6setStorage: {
object: {
key: {},
data: {}
}
}- 若 API 的 success 回调中有返回参数,以 getStorage 为例:
1
2
3
4
5
6
7
8getStorage: {
object: {
key: {}
},
success: {
data: {}
}
} - 若 API 的 success 回调中无返回参数,则不支持判断,以 setStorage 为例,虽有 success 回调但没有返回参数:
1
2
3
4
5
6setStorage: {
object: {
key: {},
data: {}
}
} - 若 API 存在 fail 和 complete 回调,不支持判断,以 setStorage 为例,存在 fai 和 complete 回调但不支持判断:
1
2
3
4
5
6setStorage: {
object: {
key: {},
data: {}
}
} - 若 API 有除了 success、fail 和 complete 之外的回调,此回调的名字为 callback,且存在回调参数,以 onLocationChange 为例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19onLocationChange: {
callback: {
isFullAccuracy: {},
latitude: {},
longitude: {},
speed: {},
accuracy: {},
altitude: {},
horizontalAccuracy: {},
street: {},
cityCode: {},
city: {},
country: {},
countryCode: {},
province: {},
streetNumber: {},
district: {}
}
} - 若 API 有除了 success、fail 和 complete之外的回调,此回调的名字为 callback,且不存在回调参数,以 offLocationChange 为例:
1
2
3offLocationChange: {
callback: {}
} - 若同步 API 有返回参数,以 isLoginSync 为例,这个同步 API 有返回参数 isLogin,那么需要写
'return'
来表示这是返回参数:1
2
3
4
5isLoginSync: {
'return': {
isLogin: {}
}
}
组件
基本结构以 view 组件为例:
1 | view: { |