• uni.getSystemInfo(OBJECT)
  • uni.getSystemInfoSync()
  • uni.canIUse(String)

    uni.getSystemInfo(OBJECT)

    获取系统信息。

    OBJECT 参数说明:

    参数名类型必填说明
    successFunction接口调用成功的回调
    failFunction接口调用失败的回调函数
    completeFunction接口调用结束的回调函数(调用成功、失败都会执行)

    success 返回参数说明:

    参数说明平台差异说明
    brand手机品牌微信小程序
    model手机型号
    pixelRatio设备像素比
    screenWidth屏幕宽度
    screenHeight屏幕高度
    windowWidth可使用窗口宽度
    windowHeight可使用窗口高度
    windowTop可使用窗口的顶部位置5+App、H5
    windowBottom可使用窗口的底部位置5+App、H5
    statusBarHeight状态栏的高度
    language应用设置的语言
    version引擎版本号微信小程序、5+App
    system操作系统版本
    platform客户端平台,值域为:iosandroid
    fontSizeSetting用户字体大小设置。以“我-设置-通用-字体大小”中的设置为准,单位:px微信小程序
    SDKVersion客户端基础库版本微信小程序、5+App
    safeArea在竖屏正方向下的安全区域微信小程序

    Tips

    • 屏幕高度=状态栏高度+原生导航栏高度+可使用窗口高度+原生tabbar高度
    • H5端,windowHeight不包含NavigationBar和TabBar的高度,windowTop等于NavigationBar高度,windowBottom等于TabBar高度,statusBarHeight为0safeArea 的结构
    参数类型说明
    leftNumber安全区域左上角横坐标
    rightNumber安全区域右下角横坐标
    topNumber安全区域左上角纵坐标
    bottomNumber安全区域右下角纵坐标
    widthNumber安全区域的宽度,单位逻辑像素
    heightNumber安全区域的高度,单位逻辑像素

    示例

    1. uni.getSystemInfo({
    2. success: function (res) {
    3. console.log(res.model);
    4. console.log(res.pixelRatio);
    5. console.log(res.windowWidth);
    6. console.log(res.windowHeight);
    7. console.log(res.language);
    8. console.log(res.version);
    9. console.log(res.platform);
    10. }
    11. });

    uni.getSystemInfoSync()

    获取系统信息同步接口。

    同步返回参数说明

    参数说明平台差异说明
    brand手机品牌微信小程序、百度小程序
    model手机型号
    pixelRatio设备像素比
    screenWidth屏幕宽度
    screenHeight屏幕高度
    windowWidth可使用窗口宽度
    windowHeight可使用窗口高度
    windowTop可使用窗口的顶部位置5+App、H5
    windowBottom可使用窗口的底部位置5+App、H5
    statusBarHeight状态栏的高度5+App、微信小程序、百度小程序
    language应用设置的语言5+App、微信小程序、支付宝小程序、百度小程序
    version引擎版本号5+App、微信小程序
    system操作系统版本
    platform客户端平台
    fontSizeSetting用户字体大小设置。以“我-设置-通用-字体大小”中的设置为准,单位:px微信小程序、支付宝小程序、百度小程序
    SDKVersion客户端基础库版本5+App、微信小程序、百度小程序、头条小程序
    safeArea在竖屏正方向下的安全区域微信小程序

    Tips

    • 使用注意同上getSystemInfosafeArea 的结构
    参数类型说明
    leftNumber安全区域左上角横坐标
    rightNumber安全区域右下角横坐标
    topNumber安全区域左上角纵坐标
    bottomNumber安全区域右下角纵坐标
    widthNumber安全区域的宽度,单位逻辑像素
    heightNumber安全区域的高度,单位逻辑像素

    示例

    1. try {
    2. const res = uni.getSystemInfoSync();
    3. console.log(res.model);
    4. console.log(res.pixelRatio);
    5. console.log(res.windowWidth);
    6. console.log(res.windowHeight);
    7. console.log(res.language);
    8. console.log(res.version);
    9. console.log(res.platform);
    10. } catch (e) {
    11. // error
    12. }

    获取设备标记

    H5、小程序、iOS,属于对用户隐私保护比较严格的平台,在这些平台很难获取有效的设备唯一标记。

    Android已经改进用户隐私保护,在很多新手机上,获取imei等信息时需要弹框让用户授权。

    • H5平台:常用的方式是uv,即在uni.storage里存一个随机数,本质是存在浏览器的localstorage里。将随机数发给服务器,进行用户身份识别和统计。当然如果用户浏览器清空了localstorage、更换了浏览器、或使用隐私模式,那么就统计数据就会有误差。
    • 小程序平台:小程序也可以采用与H5类似的方式,在uni.storage里存一个随机数。如果想获取用户的微信唯一ID,也可以弹框请求用户授权。
    • App iOS平台:iOS并不提供imei的获取API,可通过plus.device.getInfo 可以获得设备的唯一标识(uuid),这个id其实也是一种随机数概念。卸载app重装会发生变化;iOS还有一个叫idfa的广告识别符,可通过Native.js实现,在社区中搜索可见。
    • App Android平台:Android也可以使用UUID,同iOS。但Android还能得到imei,在plus.device.getInfo 可以获得设备的国际移动设备身份码(imei)。注意很多新手机在获取imei时会弹框要求用户授权。plus.device.getInfo的API是从HBuilderX 2.0.3+开始提供的,老版需使用plus.devide.uuid或plus.device.imei。

    uni.canIUse(String)

    判断应用的 API,回调,参数,组件等是否在当前版本可用。

    平台差异说明

    5+AppH5微信小程序支付宝小程序百度小程序头条小程序
    x

    String 参数说明

    使用 ${API}.${method}.${param}.${options} 或者 ${component}.${attribute}.${option} 方式来调用,例如:

    • ${API} 代表 API 名字
    • ${method} 代表调用方式,有效值为return, success, object, callback
    • ${param} 代表参数或者返回值
    • ${options} 代表参数的可选值
    • ${component} 代表组件名字
    • ${attribute} 代表组件属性
    • ${option} 代表组件属性的可选值示例
    1. uni.canIUse('getSystemInfoSync.return.screenWidth');
    2. uni.canIUse('getSystemInfo.success.screenWidth');
    3. uni.canIUse('showToast.object.image');
    4. uni.canIUse('request.object.method.GET');
    5. uni.canIUse('live-player');
    6. uni.canIUse('text.selectable');
    7. uni.canIUse('button.open-type.contact');

    发现错误?想参与编辑?在 GitHub 上编辑此页面!