uni.getDeviceInfo(options?)
获取设备信息
getDeviceInfo 兼容性 ?
| Web | 微信小程序 | 支付宝小程序 | Android | iOS | HarmonyOS |
| 4.0 | 4.41 | 5.31 | 3.9 | 4.11 | 4.61 |
参数
| 名称 | 类型 | 必填 | 默认值 | 描述 |
| options | GetDeviceInfoOptions | 否 | 包含所有字段的过滤对象 | [options=包含所有字段的过滤对象] 过滤的字段对象, 不传参数默认为获取全部字段。 |
| 名称 | 类型 | 必备 | 兼容性 | 描述 | | filter | Array<string> | 是 | | 过滤字段的字符串数组,假如要获取指定字段,传入此数组。 |
|
返回值
| 类型 |
| GetDeviceInfoResult |
| 名称 | 类型 | 必备 | 兼容性 | 描述 | | deviceBrand | string | 否 | | 设备品牌
| | deviceId | string | 否 | | 设备 id 。由 uni-app 框架生成并存储,清空 Storage 会导致改变
| | deviceModel | string | 否 | | 设备型号
| | deviceType | string | 否 | | 设备类型phone、pad、pc
| | 合法值 | | "phone" | | "pad" | | "tv" | | "watch" | | "pc" | | "null" | | "car" | | "vr" | | "appliance" |
| | deviceOrientation | string | 否 | | 设备方向 竖屏 portrait、横屏 landscape
| | devicePixelRatio | number | 否 | | 设备像素比
| | system | string | 否 | | 操作系统及版本
| | platform | string | 否 | | 客户端平台
| | 合法值 | 兼容性 | | "ios" | | | "android" | | | "harmonyos" | | | "mac" | | | "windows" | | | "linux" | | | "ohos" | | | "ohos_pc" | | | "devtools" | |
| | isRoot | boolean | 否 | | 是否root。iOS 为是否越狱
| | isUSBDebugging | boolean | 否 | | adb是否开启
| | osName | string | 否 | | 系统名称
| | 合法值 | | "ios" | | "android" | | "harmonyos" | | "macos" | | "windows" | | "linux" |
| | osVersion | string | 否 | | 操作系统版本。如 ios 版本,android 版本
| | osLanguage | string | 否 | | 操作系统语言
| | osTheme | string | 否 | | 操作系统主题
| | | osAndroidAPILevel | number | 否 | | Android 系统API库的版本。
| | osHarmonySDKAPIVersion | number | 否 | | 鸿蒙系统软件API版本
| | osHarmonyDisplayVersion | string | 否 | | 产品版本,关于本机信息内的软件版本
| | romName | string | 否 | | rom 名称。Android 部分机型获取不到值。iOS 恒为 ios
| | romVersion | string | 否 | | rom 版本号。Android 部分机型获取不到值。iOS 为操作系统版本号(同 osVersion)。
| | abi | string | 否 | | 应用(微信APP)二进制接口类型(仅 Android 支持)
| | benchmarkLevel | number | 否 | | | | cpuType | string | 否 | | 需要基础库: 2.29.0
设备 CPU 型号(仅 Android 支持)(Tips: GPU 型号可通过 WebGLRenderingContext.getExtension('WEBGL_debug_renderer_info') 来获取)
| | deviceAbi | string | 否 | | 需要基础库: 2.25.1
设备二进制接口类型(仅 Android 支持)
| | memorySize | string | 否 | | 需要基础库: 2.30.0
设备内存大小,单位为 MB
| brand | string | 否 | | 设备品牌 已废弃,仅为了向下兼容保留 | model | string | 否 | | 设备型号 已废弃,仅为了向下兼容保留 | isSimulator | boolean | 否 | | 是否是模拟器 已废弃,由于合规问题在4.51版本后不会采集传感器信息,会影响准确度,建议使用isSimulator()代替。 |
|
注意事项
- 获取OAID、AndroidID等其他设备信息,见插件市场
- romName值域候选 详见
- app平台devicePixelRatio属性,HBuilderX4.22及以下版本类型为string,HBuilderX4.23版本调整为number
- 在4.51以前,调用本api会获取传感器列表,原因是isSimulator属性判断模拟器时,需要根据传感器信息才能做出更准确的判断。但是,应用商店不允许在同意隐私协议前调用传感器。解决方案有2个:1、在同意隐私协议之后再调用,且隐私协议里声明调用传感器的用途;2、按需加载需要的信息,例如下面的代码,只获取品牌,不获取isSimulator:
示例源码如下,请查看 pre > code 标签中的内容
uni.getDeviceInfo({filter:["brand"]})
从4.51+,本api的isSimulator调整为不再获取传感器信息,但判断模拟器的准确度会下降。如需更准确的判断模拟器,需要单独使用uni.isSimulator。注意也需要在同意隐私协议之后获取。 - 自 5.11 起:
- web 平台在 macOS 上 platform 正确的返回
mac 值 - web 平台在 macOS 上获取到的 osVersion 固定为
10.15.7,这和系统版本不一致,这不是 bug,是浏览器 ua 的限制(从 macOS 11 开始,Apple 和 Google、Mozilla 等浏览器厂商达成共识,减少通过 UA 暴露精确的系统版本) - web 平台运行在鸿蒙 PC 上时 osName 仅返回
harmonyos(不会返回 ohos_pc),可通过 deviceType 为 pc 区分 - 小程序平台统一标准:鸿蒙系统 osName、platform 为
harmonyos,手机、Tablet 和 PC 通过 deviceType 区分
示例
示例为hello uni-app x alpha分支,与最新HBuilderX Alpha版同步。与最新正式版同步的master分支示例另见
扫码体验 示例源码如下,请查看 pre > code 标签中的内容
<template>
<view>
<page-head :title="title"></page-head>
<view class="uni-common-mt">
<view class="uni-list">
<view class="uni-list">
<view class="uni-list-cell" v-for="(item, _) in data.items" style="align-items: center">
<view class="uni-pd">
<view class="uni-label" style="width: 180px">
<text class="system-info-text">
{{ item.label }}
</text>
</view>
</view>
<view class="uni-list-cell-db">
<text class="uni-list-cell-db-text system-info-text">{{
item.value == "" ? "未获取" : item.value
}}</text>
</view>
</view>
</view>
</view>
<view class="uni-padding-wrap">
<view class="uni-btn-v">
<button type="primary" @tap="getDeviceInfo">获取设备信息</button>
</view>
</view>
</view>
</view>
</template>
<script setup lang="ts">
import { setDevicePixelRatio } from '@/store/index.ts'
type Item = {
label : string,
value : string,
}
type DataType = {
items: Item[];
}
const title = ref('getDeviceInfo')
const data = reactive({
items: [] as Item[],
} as DataType)
const getDeviceInfo = () => {
const res = uni.getDeviceInfo();
// 获取像素比, 供截图对比使用
setDevicePixelRatio(res.devicePixelRatio !== null ? res.devicePixelRatio! : 1)
data.items = [] as Item[];
const res_obj = JSON.parse(JSON.stringify(res));
const keys = Object.keys(res_obj);
keys.sort().forEach(key => {
const value = res_obj[key];
if (value != null) {
const item = {
label: key,
value: "" + ((typeof value == "object") ? JSON.stringify(value) : value)
} as Item;
data.items.push(item);
}
});
}
</script>
<style>
.uni-pd {
padding-left: 15px;
}
.system-info-text {
color: var(--text-color, #333333);
}
</style>
参见
通用类型
GeneralCallbackResult
| 名称 | 类型 | 必备 | 描述 |
| errMsg | string | 是 | 错误信息 |