---
name: "getSystemInfo"
mode: "kit"
versionRequirements:
  - { name: "BaseKit", version: "2.0.1" }
  - { name: "@ray-js/ray", version: "0.3.23" }
platform:
  - "iOS"
  - "Android"
async: true
title: "getSystemInfo - 获取系统信息"
---

## getSystemInfo

> [VERSION] BaseKit >= 2.0.1 | @ray-js/ray >= 0.3.23

> [PLATFORM] iOS, Android

> ⚡ **支持 Promise 调用** — 不传 success / fail / complete 回调时，该方法返回 Promise。

### 描述

获取系统信息

### 参数

| 属性 | 类型 | 必填 | 默认值 | 描述 |
| --- | --- | --- | --- | --- |
| `complete` | `() => void` | 否 | - | 接口调用结束的回调函数（调用成功、失败都会执行） |
| `success` | `(params: Object) => void` ↓见下方 | 否 | - | 接口调用成功的回调函数 |
| `fail` | `(params: Object) => void` ↓见下方 | 否 | - | 接口调用失败的回调函数 |

#### success 回调参数

| 属性 | 类型 | 最低版本 | 描述 |
| --- | --- | --- | --- |
| `is24Hour` | `boolean` | `3.2.6` | 是否为 24 小时制 |
| `system` | `string` | `3.2.6` | 操作系统及版本 |
| `brand` | `string` | `3.2.6` | 设备品牌 |
| `model` | `string` | `3.2.6` | 设备型号 |
| `platform` | `string` | `3.2.6` | 系统类型，如 ios、android、harmony |
| `timezoneId` | `string` | `3.2.6` | 时区标识 |
| `pixelRatio` | `number` | `3.2.6` | 像素比 |
| `screenWidth` | `number` | `3.2.6` | 屏幕宽度，单位为逻辑像素，例如返回 411 |
| `screenHeight` | `number` | `3.2.6` | 屏幕高度，单位为逻辑像素，例如返回 914 |
| `windowWidth` | `number` | `3.2.6` | 窗口宽度，单位为逻辑像素，例如返回 411 |
| `windowHeight` | `number` | `3.2.6` | 窗口高度，单位为逻辑像素，例如返回 914 |
| `useableWindowWidth` | `number` | `3.3.2` | 可使用窗口宽度，单位为逻辑像素，例如返回 411 |
| `useableWindowHeight` | `number` | `3.3.2` | 可使用窗口高度，单位为逻辑像素，例如返回 814 |
| `statusBarHeight` | `number` | `3.2.6` | 状态栏高度，单位为逻辑像素，例如返回 34 |
| `language` | `string` | `3.2.6` | 当前语言 |
| `safeArea` | `SafeArea` | `3.2.6` | 安全区域信息，字段单位为逻辑像素，例如返回 { left: 0, right: 411, top: 34, bottom: 898, width: 411, height: 864 } |
| `albumAuthorized` | `boolean` | `3.2.6` | 是否允许访问相册 |
| `cameraAuthorized` | `boolean` | `3.2.6` | 是否允许访问摄像头 |
| `locationAuthorized` | `boolean` | `3.2.6` | 是否允许访问定位 |
| `microphoneAuthorized` | `boolean` | `3.2.6` | 是否允许访问麦克风 |
| `notificationAuthorized` | `boolean` | `3.2.6` | 是否允许发送通知 |
| `notificationAlertAuthorized` | `boolean` | `3.2.6` | 是否允许通知提醒 |
| `notificationBadgeAuthorized` | `boolean` | `3.2.6` | 是否允许通知角标 |
| `notificationSoundAuthorized` | `boolean` | `3.2.6` | 是否允许通知声音 |
| `bluetoothEnabled` | `boolean` | `3.2.6` | 蓝牙开关是否开启 |
| `locationEnabled` | `boolean` | `3.2.6` | 定位开关是否开启 |
| `wifiEnabled` | `boolean` | `3.2.6` | Wi-Fi 开关是否开启 |
| `theme` | `"dark" \| "light"` | `3.2.6` | 当前主题 |
| `deviceOrientation` | `"portrait" \| "landscape"` | `3.2.6` | 当前屏幕方向 |
| `deviceLevel` | `string` | `3.3.3` | 设备等级(低:low-中:middle-高:high) |
| `isSupportPinShortcut` | `boolean` | `3.5.0` | 手机系统是否支持创建快捷方式（仅Android使用） |
| `deviceType` | `string` | `3.10.6` | 设备类型 phone：手机 pad：平板 |

#### fail 回调参数

| 属性 | 类型 | 描述 |
| --- | --- | --- |
| `errorMsg` | `string` | 错误信息 |
| `errorCode` | `string \| number` | 错误码 |
| `innerError` | `Object` | 错误扩展 |

##### fail(params).innerError 的属性

| 属性 | 类型 | 描述 |
| --- | --- | --- |
| `errorCode` | `string \| number` | 错误扩展码 |
| `errorMsg` | `string` | 错误扩展信息 |


### 引用对象

##### `interface` SafeArea

| 属性 | 类型 | 最低版本 | 描述 |
| --- | --- | --- | --- |
| `left` | `number` | `3.2.6` | 左边距 安全区域左边界位置，单位为逻辑像素，例如返回 0 |
| `right` | `number` | `3.2.6` | 右边距 安全区域右边界位置，单位为逻辑像素，例如返回 411 |
| `top` | `number` | `3.2.6` | 上边距 安全区域上边界位置，单位为逻辑像素，例如返回 34 |
| `bottom` | `number` | `3.2.6` | 下边距 安全区域下边界位置，单位为逻辑像素，例如返回 898 |
| `width` | `number` | `3.2.6` | 安全区域宽度，单位为逻辑像素，例如返回 411 |
| `height` | `number` | `3.2.6` | 安全区域高度，单位为逻辑像素，例如返回 864 |


### 合法值

##### `success.theme` 合法值

| 值 | 说明 |
| --- | --- |
| `"dark"` | 暗黑模式 |
| `"light"` | 亮色模式 |

##### `success.deviceOrientation` 合法值

| 值 | 说明 |
| --- | --- |
| `"portrait"` | 竖屏 |
| `"landscape"` | 横屏 |


### 示例代码

#### Demo

```tsx
import { getSystemInfo } from '@ray-js/ray'

getSystemInfo({
  success: data => {
    console.log(data);
  },
  fail: error => {
    console.error(error);
  },
});
```
