swan.getSystemInfo

基础库 1.10.8 版本开始支持。

解释:获取系统信息

方法参数

Object object

object 参数说明

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

success返回参数说明

参数说明最低版本
brand手机品牌
model手机型号
pixelRatio设备像素比
screenWidth屏幕宽度
screenHeight屏幕高度
windowWidth可使用窗口宽度
windowHeight可使用窗口高度
statusBarHeight状态栏的高度
navigationBarHeight导航栏的高度3.0.17
language宿主 App 设置的语言
version宿主 App 版本号
system操作系统版本
platform客户端平台,如:ios。
fontSizeSetting用户字体大小设置
SDKVersion客户端基础库版本
host宿主平台,详见宿主平台枚举值列表swan.getSystemInfo - 图13.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; 开发者工具暂不支持
wifiEnabledWi-Fi 的系统开关安卓最低支持基础库版本3.110.3; ios最低支持版本3.110.3; 开发者工具暂不支持
safeArea在竖屏正方向下的安全区域安卓最低支持基础库版本3.110.3; ios最低支持版本3.110.3; 开发者工具暂不支持

示例

扫码体验

swan.getSystemInfo - 图2请使用百度APP扫码

图片示例

swan.getSystemInfo - 图3

swan.getSystemInfo - 图4

swan.getSystemInfo - 图5

代码示例1 - 属性全集 :

在开发者工具中预览效果

  • 在 swan 文件中
  1. <view class="container">
  2. <view class="card-area">
  3. <view class="list-area border-bottom" s-for="item in infoList">
  4. <text class="list-item-key-4">{{item.label}}:</text>
  5. <text class="list-item-value">{{item.value}}</text>
  6. </view>
  7. <view class="button-group">
  8. <button bind:tap="getSystemInfo" type="primary" hover-stop-propagation="true">点击获取系统信息</button>
  9. </view>
  10. </view>
  11. </view>
  • 在 js 文件中
  1. Page({
  2. data: {
  3. infoList: [{
  4. label: '手机品牌',
  5. key: 'brand',
  6. value: ''
  7. }, {
  8. label: '手机型号',
  9. key: 'model',
  10. value: ''
  11. }, {
  12. label: '使用窗口宽',
  13. key: 'windowWidth',
  14. value: ''
  15. }, {
  16. label: '使用窗口高',
  17. key: 'windowHeight',
  18. value: ''
  19. },{
  20. label: '状态栏高',
  21. key: 'statusBarHeight',
  22. value: ''
  23. },{
  24. label: '导航栏高',
  25. key: 'navigationBarHeight',
  26. value: ''
  27. }, {
  28. label: '宿主版本',
  29. key: 'version',
  30. value: ''
  31. }, {
  32. label: '操作系统',
  33. key: 'system',
  34. value: ''
  35. }, {
  36. label: '客户端平台',
  37. key: 'platform',
  38. value: ''
  39. }, {
  40. label: '屏幕宽度',
  41. key: 'screenWidth',
  42. value: ''
  43. }, {
  44. label: '屏幕高度',
  45. key: 'screenHeight',
  46. value: ''
  47. }, {
  48. label: '用户字体',
  49. key: 'fontSizeSetting',
  50. value: ''
  51. }, {
  52. label: '基础库版本',
  53. key: 'SDKVersion',
  54. value: ''
  55. }, {
  56. label: '宿主平台',
  57. key: 'host',
  58. value: ''
  59. }, {
  60. label: '宿主平台版本',
  61. key: 'swanNativeVersion',
  62. value: ''
  63. }, {
  64. label: '屏幕密度',
  65. key: 'devicePixelRatio',
  66. value: ''
  67. }, {
  68. label: 'DPI',
  69. key: 'pixelRatio',
  70. value: ''
  71. }, {
  72. label: '宿主语言',
  73. key: 'language',
  74. value: ''
  75. }]
  76. },
  77. onLoad(e) {
  78. },
  79. getSystemInfo(e) {
  80. swan.getSystemInfo({
  81. success: res => {
  82. console.log('res', res);
  83. // 更新数据
  84. this.updateInfoList(res);
  85. },
  86. fail: err => {
  87. swan.showToast({
  88. title: '获取失败'
  89. });
  90. }
  91. });
  92. },
  93. updateInfoList(res) {
  94. let infoList = this.getData('infoList');
  95. for (let i = 0; i < infoList.length; ++i) {
  96. if (res[infoList[i].key] === '') {
  97. infoList[i].value = '暂无';
  98. } else {
  99. infoList[i].value = res[infoList[i].key];
  100. }
  101. }
  102. this.setData('infoList', infoList);
  103. }
  104. });

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

在开发者工具中预览效果

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

代码示例3: safeArea属性 :

在开发者工具中预览效果

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

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

或参见百度通用iphoneX适配swan.getSystemInfo - 图6

在开发者工具中预览效果

  • 在 js 文件中
  1. Page({
  2. getSystemInfo(e) {
  3. swan.getSystemInfo({
  4. success: systemInfo => {
  5. console.log('systemInfo', systemInfo);
  6. // 针对适配某一机型和模拟器
  7. if (systemInfo.model
  8. && (systemInfo.model.indexOf('iPhone X') > -1)
  9. || (systemInfo.model === 'iPhone Simulator <x86-64>'
  10. && systemInfo.screenWidth === 375)) {
  11. this.setData({
  12. isIPhoneX: true
  13. })
  14. }
  15. },
  16. fail: err => {
  17. swan.showToast({
  18. title: '获取失败'
  19. });
  20. }
  21. });
  22. }
  23. });

错误码

Android

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