@capacitor/device
Device API 暴露有关设备的内部信息,例如型号和操作系统版本,以及用户信息,例如唯一标识符。
安装
npm install @capacitor/device@latest-6
npx cap sync
Apple 隐私清单要求
Apple 要求应用开发者现在必须指定 API 使用批准理由以增强用户隐私。到 2024 年 5 月 1 日,在向 App Store Connect 提交应用时必须包含这些理由。
在您的应用中使用此特定插件时,您必须在 /ios/App 中创建一个 PrivacyInfo.xcprivacy 文件,或使用 VS Code 扩展生成它,并指定使用理由。
有关详细步骤,请参阅 Capacitor 文档。
对于此插件,必需的字典键是 NSPrivacyAccessedAPICategoryDiskSpace,推荐的理由是 85F4.1。
示例 PrivacyInfo.xcprivacy
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSPrivacyAccessedAPITypes</key>
<array>
<!-- 如果 PrivacyInfo 文件已存在,将此 dict 条目添加到数组 中 -->
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryDiskSpace</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>85F4.1</string>
</array>
</dict>
</array>
</dict>
</plist>
插件使用示例
import { Device } from '@capacitor/device';
const logDeviceInfo = async () => {
const info = await Device.getInfo();
console.log(info);
};
const logBatteryInfo = async () => {
const info = await Device.getBatteryInfo();
console.log(info);
};
API
getId()
getId() => Promise<DeviceId>
返回设备的唯一标识符。
返回:
Promise<DeviceId>
始于: 1.0.0
getInfo()
getInfo() => Promise<DeviceInfo>
返回有关底层设备/操作系统/平台的信息。
返回:
Promise<DeviceInfo>
始于: 1.0.0
getBatteryInfo()
getBatteryInfo() => Promise<BatteryInfo>
返回有关电池的信息。
返回:
Promise<BatteryInfo>
始于: 1.0.0
getLanguageCode()
getLanguageCode() => Promise<GetLanguageCodeResult>
获取设备的当前语言区域代码。
返回:
Promise<GetLanguageCodeResult>
始于: 1.0.0
getLanguageTag()
getLanguageTag() => Promise<LanguageTag>
获取设备的当前语言区域标签。
返回:
Promise<LanguageTag>
始于: 4.0.0
接口
DeviceId
| 属性 | 类型 | 描述 | 始于 |
|---|---|---|---|
identifier | string | 应用可用的设备标识符。该标识符可能在现代移动平台上发生变化,这些平台只允许按应用安装的 ID。在 iOS 上,该标识符是一个 UUID,唯一标识设备到应用供应商(了解更多)。在 Android 8+ 上,该标识符是一个 64 位数字(以十六进制字符串表示),对于每个应用签名密钥、用户和设备的组合是唯一的(了解更多)。在 Web 上,会生成一个随机标识符并存储在 localStorage 中以供后续调用使用。如果 localStorage 不可用,每次调用都会生成一个新的随机标识符。 | 1.0.0 |
DeviceInfo
| 属性 | 类型 | 描述 | 始于 |
|---|---|---|---|
name | string | 设备名称。例如 "John's iPhone"。仅在 iOS 和 Android 7.1 及以上版本支持。在 iOS 16+ 上,如果没有适当的授权,将返回通用设备名称。 | 1.0.0 |
model | string | 设备型号。例如 "iPhone13,4"。 | 1.0.0 |
platform | 'ios' | 'android' | 'web' | 设备平台(小写)。 | 1.0.0 |
operatingSystem | | 设备的操作系统。 | 1.0.0 |
osVersion | string | 设备操作系统的版本。 | 1.0.0 |
iOSVersion | number | iOS 版本号。仅适用于 iOS。多部分版本号被压缩为两位数字填充的整数,例如 "16.3.1" -> 160301。 | 5.0.0 |
androidSDKVersion | number | Android SDK 版本号。仅适用于 Android。 | 5.0.0 |
manufacturer | string | 设备制造商。 | 1.0.0 |
isVirtual | boolean | 应用是否运行在模拟器中。 | 1.0.0 |
memUsed | number | 当前应用使用的近似内存量,以字节为单位。除以 1048576 得到使用的 MB 数。 | 1.0.0 |
diskFree | number | 操作系统常规数据存储路径上的可用磁盘空间量,以字节为单位。在 Android 上,返回的是持有核心 Android OS 的 "system" 分区的可用磁盘空间。在 iOS 上,此值不准确。 | 1.0.0 |
diskTotal | number | 操作系统常规数据存储路径的总大小,以字节为单位。在 Android 上,返回的是持有核心 Android OS 的 "system" 分区的磁盘空间。 | 1.0.0 |
realDiskFree | number | 常规数据存储路径上的可用磁盘空间量,以字节为单位。 | 1.1.0 |
realDiskTotal | number | 常规数据存储路径的总大小,以字节为单位。 | 1.1.0 |
webViewVersion | string | WebView 浏览器版本。 | 1.0.0 |
BatteryInfo
| 属性 | 类型 | 描述 | 始于 |
|---|---|---|---|
batteryLevel | number | 表示电池充电量的百分比(0 到 1)。 | 1.0.0 |
isCharging | boolean | 设备是否正在充电。 | 1.0.0 |
GetLanguageCodeResult
| 属性 | 类型 | 描述 | 始于 |
|---|---|---|---|
value | string | 两个字符的语言代码。 | 1.0.0 |
LanguageTag
| 属性 | 类型 | 描述 | 始于 |
|---|---|---|---|
value | string | 返回一个格式良好的 IETF BCP 47 语言标签。 | 4.0.0 |