swan.getSystemInfo

基础库 1.10.8 版本开始支持。

解释:获取系统信息
Web 态说明:由于浏览器的限制,在 Web 态下部分系统信息无法获取,详见下方 success 返回参数说明。

# 方法参数

Object object

# object 参数说明

属性名 类型 必填 默认值 说明
success Function 接口调用成功的回调
fail Function 接口调用失败的回调函数
complete Function 接口调用结束的回调函数(调用成功、失败都会执行)

# success 返回参数说明

参数 说明 最低版本 Web 态说明
brand 手机品牌 -
model 手机型号 -
pixelRatio 设备像素比 -
screenWidth 屏幕宽度 -
screenHeight 屏幕高度 -
windowWidth 可使用窗口宽度 -
windowHeight 可使用窗口高度 -
statusBarHeight 状态栏的高度 -
navigationBarHeight 导航栏的高度 3.0.17 -
language 宿主 App 设置的语言 -
version 宿主 App 版本号 Web 态无宿主概念,返回空字符串
system 操作系统版本 -
platform 客户端平台,如:ios。 Web 态下该字段为 'web'
fontSizeSetting 用户字体大小设置,取值为 1、2、3、4,分别对应小、中、大、特大四种字体等级 -
SDKVersion 客户端基础库版本 Web 态无基础库版本管理,仅返回模拟值 999.999.999
host 宿主平台,详见宿主平台枚举值列表 3.30.2 Web 态的 host 为 'web'
cacheLocation 上一次缓存的位置信息 安卓端最低基础库版本 3.40.4;ios 最低支持版本 3.70.2 暂不支持
swanNativeVersion 宿主平台版本号 最低支持版本 1.13.18 Web 态无宿主概念,仅返回模拟值
devicePixelRatio 屏幕密度 安卓最低支持基础库版本 3.0.39; ios 最低支持版本 3.0.39 -
albumAuthorized 允许宿主使用相册的开关(仅 iOS 有效) ios 最低支持版本 3.110.3; 开发者工具暂不支持 暂不支持
notificationAuthorized 允许宿主通知的开关 安卓最低支持基础库版本 3.110.3; ios 最低支持版本 3.110.3; 开发者工具暂不支持 暂不支持
notificationAlertAuthorized 允许宿主通知带有提醒的开关(仅 iOS 有效) ios 最低支持版本 3.110.3; 开发者工具暂不支持 暂不支持
notificationBadgeAuthorized 允许宿主通知带有标记的开关(仅 iOS 有效) ios 最低支持版本 3.110.3; 开发者工具暂不支持 暂不支持
notificationSoundAuthorized 允许宿主通知带有声音的开关(仅 iOS 有效) ios 最低支持版本 3.110.3; 开发者工具暂不支持 暂不支持
cameraAuthorized 允许宿主使用摄像头的开关 安卓最低支持基础库版本 3.110.3; ios 最低支持版本 3.110.3; 开发者工具暂不支持 暂不支持
locationAuthorized 允许宿主使用定位的开关 安卓最低支持基础库版本 3.110.3; ios 最低支持版本 3.110.3; 开发者工具暂不支持 暂不支持
microphoneAuthorized 允许宿主使用麦克风的开关 安卓最低支持基础库版本 3.110.3; ios 最低支持版本 3.110.3; 开发者工具暂不支持 暂不支持
locationEnabled 地理位置的系统开关 安卓最低支持基础库版本 3.110.3; ios 最低支持版本 3.110.3; 开发者工具暂不支持 暂不支持
wifiEnabled Wi-Fi 的系统开关 安卓最低支持基础库版本 3.110.3; ios 最低支持版本 3.110.3; 开发者工具暂不支持 暂不支持
safeArea 在竖屏正方向下的安全区域 安卓最低支持基础库版本 3.110.3; ios 最低支持版本 3.110.3; 开发者工具暂不支持 暂不支持

# 示例

# 扫码体验

扫码体验
重新加载
请使用百度APP扫码

# 图片示例

# 代码示例 1: 属性全集

    <view class="wrap">
        <view class="card-area">
            <view class="list-area border-bottom" s-for="item in infoList">
                <text class="list-item-key-4">{{item.label}}:</text>
                <text class="list-item-value">{{item.value}}</text>
            </view>
        </view>
        <view class="swan-security-padding-bottom flex-button">
            <button bindtap="getSystemInfo" type="primary" hover-stop-propagation="true">点击获取系统信息</button>
        </view>
    </view>
    
    Page({
        data: {
            infoList: [{
                label: '手机品牌',
                key: 'brand',
                value: ''
            }, {
                label: '手机型号',
                key: 'model',
                value: ''
            }, {
                label: '使用窗口宽',
                key: 'windowWidth',
                value: ''
            }, {
                label: '使用窗口高',
                key: 'windowHeight',
                value: ''
            }, {
                label: '状态栏高',
                key: 'statusBarHeight',
                value: ''
            }, {
                label: '导航栏高',
                key: 'navigationBarHeight',
                value: ''
            }, {
                label: '宿主版本',
                key: 'version',
                value: ''
            }, {
                label: '操作系统',
                key: 'system',
                value: ''
            }, {
                label: '客户端平台',
                key: 'platform',
                value: ''
            }, {
                label: '屏幕宽度',
                key: 'screenWidth',
                value: ''
            }, {
                label: '屏幕高度',
                key: 'screenHeight',
                value: ''
            }, {
                label: '用户字体',
                key: 'fontSizeSetting',
                value: ''
            }, {
                label: '基础库版本',
                key: 'SDKVersion',
                value: ''
            }, {
                label: '宿主平台',
                key: 'host',
                value: ''
            }, {
                label: '宿主平台版本',
                key: 'swanNativeVersion',
                value: ''
            }, {
                label: '屏幕密度',
                key: 'devicePixelRatio',
                value: ''
            }, {
                label: 'DPI',
                key: 'pixelRatio',
                value: ''
            }, {
                label: '宿主语言',
                key: 'language',
                value: ''
            }]
        },
        getSystemInfo(e) {
            swan.getSystemInfo({
                success: res => {
                    console.log('getSystemInfo success', res);
                    // 更新数据
                    this.updateInfoList(res);
                },
                fail: err => {
                    console.log('getSystemInfo fail', err);
                    swan.showToast({
                        title: '获取失败',
                        icon: 'none'
                    });
                }
            });
        },
    
        clearClick() {
            this.updateInfoList({});
        },
    
        updateInfoList(res) {
            let infoList = this.data.infoList;
            for (let item of this.data.infoList) {
                if (res[item.key] === '') {
                    item.value = '暂无';
                }
                else {
                    item.value = res[item.key];
                }
            }
            this.setData('infoList', infoList);
        }
    });
    

    # 代码示例 2: 开发者一般在模拟顶部导航栏时用到 statusBarHeight 属性

      <!-- 代码链接中为自定义组件写法,可进行多页面复用 -->
      <view class="nav-box">
          <view class="top-title" style="margin-top:{{statusBarHeight}}px">
              <view class="back-icon-wrap" bindtap="back">
                  <image class="back-icon" src="/images/back.png"></image>
              </view>
              <view class="page-title">
                  <view class="page-title-china">{{chinaName}}</view>
                  <view class="page-title-english">{{engName}}</view>
              </view>
          </view>
      </view>
      <!-- 占位元素,防止接下来的页面内容被导航栏遮挡 -->
      <view style="padding-top:{{statusBarHeight + 0.53}}px"></view>
      
      methods: {
          created() {
              swan.getSystemInfo({
                  success: res => {
                      console.log('getSystemInfo success', res);
                      this.setData({
                          'statusBarHeight': res.statusBarHeight
                      });
                  },
                  fail: err => {
                      console.log('getSystemInfo fail', err);
                  }
              });
          }
      }
      

      # 代码示例 3: safeArea 属性

        <view class="wrap">
            <view class="card-area">可使用窗口高度:{{windowHeight}}</view>
            <view class="card-area">屏幕高度:{{screenHeight}}</view>
            <view class="card-area">安全区域bottom:{{safeArea}}</view>
            <button bind:tap="getSystemInfo" type="primary">获取数据</button>
        </view>
        
        Page({
            getSystemInfo(e) {
                swan.getSystemInfo({
                    success: res => {
                        this.setData({
                            screenHeight: res.screenHeight,
                            windowHeight: res.windowHeight,
                            safeArea: res.safeArea.bottom
                        });
                        if ( res.safeArea.bottom !== res.screenHeight) {
                            swan.showToast({
                                title: '需要适配',
                                icon: 'none'
                            });
                        }
                    },
                    fail: err => {
                        swan.showToast({
                            title: '获取失败',
                            icon: 'none'
                        });
                    }
                });
            }
        });
        
        

        # 代码示例 4: 适配 iphoneX 等机型

        或参见百度通用iphoneX 适配

          <view class="wrap">
              <button bindtap="getSystemInfo">
                  是否是iphoneX
              </button>
              <view class="card-area"> {{isIPhoneX}} </view>
          </view>
          
          Page({
              data: {
                  isIPhoneX: ''
              },
              getSystemInfo(e) {
                  swan.getSystemInfo({
                      success: systemInfo => {
                          console.log('getSystemInfo success', systemInfo);
                          if (systemInfo.model && (systemInfo.model.indexOf('iPhone X') > -1) || (systemInfo.model === 'iPhone Simulator <x86-64>' && systemInfo.screenWidth === 375)) {
                              this.setData({
                                  isIPhoneX: true
                              })
                          }
                          else {
                              this.setData({
                                  isIPhoneX: false
                              })
                          }
                      },
                      fail: err => {
                          swan.showToast({
                              title: '获取失败'
                          });
                      }
                  });
              }
          });
          
          

          # 错误码

          # Android

          错误码 说明
          201 解析失败,请检查调起协议是否合法
          202 解析失败,请检查参数是否正确
          402 安全性检查:访问控制校验失败