Skip to content

Cordova - 设备信息

cordova-plugin-device 插件提供了访问底层设备和平台信息的功能。它定义了一个全局的 device 对象,用于描述设备的硬件和软件。

使用 Cordova CLI 安装插件:

cordova plugin add cordova-plugin-device

添加插件后,建议重建项目:cordova build <platform>。

虽然你可以简单地使用 console.log 输出设备信息,但在 UI 中显示它对于测试来说更用户友好。在 www/index.html 中:

<body>
<h1>设备信息</h1>
<button id="getDeviceInfoBtn">获取设备信息</button>
<div id="deviceInfoDisplay">
<p>Cordova 版本: <span id="cordovaVersion"></span></p>
<p>型号: <span id="deviceModel"></span></p>
<p>平台: <span id="devicePlatform"></span></p>
<p>UUID: <span id="deviceUUID"></span></p>
<p>操作系统版本: <span id="deviceOSVersion"></span></p>
<p>制造商: <span id="deviceManufacturer"></span></p>
<p>是虚拟机: <span id="deviceIsVirtual"></span></p>
<p>序列号: <span id="deviceSerial"></span></p>
</div>
<script src="cordova.js"></script>
<script src="js/index.js"></script>
</body>

步骤 3 - 在 JavaScript 中访问设备信息

Section titled “步骤 3 - 在 JavaScript 中访问设备信息”

device 对象在 deviceready 事件触发后即可全局访问。在 www/js/index.js 中:

document.addEventListener('deviceready', onDeviceReady, false);
function onDeviceReady() {
console.log('设备已就绪。`device` 对象可用。');
// 此时 device 对象已经填充完毕。
// 你可以直接访问它的属性。
console.log('设备型号:' + device.model);
document.getElementById('getDeviceInfoBtn').addEventListener('click', displayDeviceInfo);
// (可选)在加载时立即显示信息:
// displayDeviceInfo();
}
function displayDeviceInfo() {
if (typeof device !== 'undefined') {
document.getElementById('cordovaVersion').textContent = device.cordova;
document.getElementById('deviceModel').textContent = device.model;
document.getElementById('devicePlatform').textContent = device.platform;
document.getElementById('deviceUUID').textContent = device.uuid;
document.getElementById('deviceOSVersion').textContent = device.version;
document.getElementById('deviceManufacturer').textContent = device.manufacturer;
document.getElementById('deviceIsVirtual').textContent = device.isVirtual;
document.getElementById('deviceSerial').textContent = device.serial;
// 将所有设备属性记录到控制台以便轻松检查
console.log('完整的 device 对象:', device);
} else {
console.error('设备插件不可用或 deviceready 未触发。');
alert('设备信息不可用。');
}
}

device 对象通常提供以下属性:

  • device.cordova:设备上运行的 Cordova 版本。
  • device.model:设备的型号名称或产品代码。该值取决于制造商。
  • device.platform:设备的操作系统名称(例如,“Android”,“iOS”)。
  • device.uuid:设备的通用唯一标识符 (UUID)。注意:UUID 的可靠性和持久性因平台和操作系统版本而异。有关如何生成及其永久性的详细信息,请参阅平台特定文档。
  • device.version:操作系统版本(例如,Android 10 的“10.0”,iOS 14.1 的“14.1”)。
  • device.manufacturer:设备的制造商。
  • device.isVirtual:一个布尔值,指示应用是在模拟器/虚拟机中运行(true)还是在物理设备上运行(false)。
  • device.serial:设备硬件序列号。出于隐私原因,在较新的操作系统版本上(例如 Android 10+)可能限制访问序列号。
  • 可用性:并非所有属性在所有平台或操作系统版本上都可用。请始终查阅官方插件文档以获取最新详情。
  • UUID 隐私:使用 device.uuid 时注意用户隐私。在某些平台上,此 ID 在恢复出厂设置或重新安装应用后可能会更改。对于 Android 10 (API level 29) 及更高版本,应用必须具有 READ_PRIVILEGED_PHONE_STATE 特权权限才能访问不可重置的设备标识符,包括 IMEI 和序列号。Cordova 应用通常没有此类特权权限。
  • device.isVirtual:对于在模拟器/虚拟机中运行时启用特定的调试功能或改变行为很有用。

设备信息可用于:

  • 分析和日志记录:向服务器发送特定于设备的数据,以跟踪不同设备类型和操作系统版本上的使用模式、崩溃或性能指标。
  • 平台特定逻辑:根据 device.platform 有条件地执行代码或应用不同的 UI 样式(例如,if (device.platform === ‘iOS’) { … })。
  • 调试:在开发过程中在应用内显示设备信息,以帮助识别特定配置的问题。
  • 功能切换:根据操作系统版本或设备功能启用或禁用功能(尽管特定功能检测插件通常更适合检测功能)。
  • 先触发 deviceready:始终在 deviceready 事件触发后访问 device 对象。
  • 优雅降级:如果你的应用依赖于特定属性,请在使用之前检查其是否存在,因为它可能并非在所有设备/平台 上都可用。
  • 隐私:如果你收集和传输 UUID 或序列号等设备标识符,请对用户透明。仅收集必要的信息并遵守隐私法规。

有关属性和平台特性的最新信息,请参阅 Cordova Device 插件文档。