swan.getSystemInfo

基础库 1.10.8 版本开始支持。

解释:获取系统信息

# 方法参数

Object object

# object 参数说明

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

# success返回参数说明

参数 说明 最低版本
brand 手机品牌
model 手机型号
pixelRatio 设备像素比
screenWidth 屏幕宽度
screenHeight 屏幕高度
windowWidth 可使用窗口宽度
windowHeight 可使用窗口高度
statusBarHeight 状态栏的高度
navigationBarHeight 导航栏的高度 3.0.17
language 宿主 App 设置的语言
version 宿主 App 版本号
system 操作系统版本
platform 客户端平台,如:ios。
fontSizeSetting 用户字体大小设置
SDKVersion 客户端基础库版本
host 宿主平台,详见宿主平台枚举值列表 3.30.2
cacheLocation 上一次缓存的位置信息 安卓端最低基础库版本3.40.4;ios最低支持版本3.70.2
swanNativeVersion 宿主平台版本号 最低支持版本1.13.18
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 - 属性全集 :

在开发者工具中预览效果

  • 在 swan 文件中
<view class="container">
    <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 class="button-group">
            <button bind:tap="getSystemInfo" type="primary" hover-stop-propagation="true">点击获取系统信息</button>
        </view>
    </view>
</view>
  • 在 js 文件中
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: ''
        }]
    },
    onLoad(e) {
    },
    getSystemInfo(e) {
        swan.getSystemInfo({
            success: res => {
                console.log('res', res);
                // 更新数据
                this.updateInfoList(res);
            },
            fail: err => {
                swan.showToast({
                    title: '获取失败'
                });
            }
        });
    },
    updateInfoList(res) {
        let infoList = this.getData('infoList');
        for (let i = 0; i < infoList.length; ++i) {
            if (res[infoList[i].key] === '') {
                infoList[i].value = '暂无';
            } else {
                infoList[i].value = res[infoList[i].key];
            }
        }
        this.setData('infoList', infoList);
    }
});

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

在开发者工具中预览效果

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

# 代码示例3: safeArea属性 :

在开发者工具中预览效果

  • 在 swan 文件中
<!-- tabbar页面 -->
<view class="wrap">
    <view class="card-area">屏幕高度:{{screenHeight}} </view>
    <view class="card-area">可使用窗口高度:{{windowHeight}} </view>
    <view class="card-area">安全区域高度{{safeArea}} </view>
    <button bind:tap="getSystemInfo" type="primary">获取数据</button>
    <button bind:tap="navigateTo">点击跳转到无tabbar页面查看安全区差异</button>
</view>
  • 在 js 文件中
Page({
    data: { },
    getSystemInfo(e) {
        swan.getSystemInfo({
            success: res => {
                console.log('res', res);
                this.setData('screenHeight', res.screenHeight)
                this.setData('windowHeight', res.windowHeight)
                this.setData('safeArea', 
                res.safeArea.height)
            },
            fail: err => {
                swan.showToast({
                    title: '获取失败'
                });
            }
        });
    }
});

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

或参见百度通用iphoneX适配

在开发者工具中预览效果

  • 在 js 文件中
Page({
    getSystemInfo(e) {
        swan.getSystemInfo({
            success: systemInfo => {
                console.log('systemInfo', systemInfo);
                // 针对适配某一机型和模拟器
                if (systemInfo.model 
                && (systemInfo.model.indexOf('iPhone X') > -1)
                || (systemInfo.model === 'iPhone Simulator <x86-64>' 
                && systemInfo.screenWidth === 375)) {
                    this.setData({
                        isIPhoneX: true
                    })
                }
            },
            fail: err => {
                swan.showToast({
                    title: '获取失败'
                });
            }
        });
    }
});

# 错误码

# Android

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