Cordova - 设备信息
Cordova - 设备信息
Section titled “Cordova - 设备信息”cordova-plugin-device 插件提供了访问底层设备和平台信息的功能。它定义了一个全局的 device 对象,用于描述设备的硬件和软件。
步骤 1 - 安装设备插件
Section titled “步骤 1 - 安装设备插件”使用 Cordova CLI 安装插件:
cordova plugin add cordova-plugin-device添加插件后,建议重建项目:cordova build <platform>。
步骤 2 - 准备 UI(可选但推荐)
Section titled “步骤 2 - 准备 UI(可选但推荐)”虽然你可以简单地使用 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 对象属性
Section titled “Device 对象属性”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+)可能限制访问序列号。
关于属性的重要说明:
Section titled “关于属性的重要说明:”- 可用性:并非所有属性在所有平台或操作系统版本上都可用。请始终查阅官方插件文档以获取最新详情。
- 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 插件文档。