cordova-plugin-device

Android Testsuite Chrome Testsuite iOS Testsuite Lint Test

此插件定义了一个全局 device 对象,它描述了设备的硬件和软件。虽然该对象位于全局范围内,但在 deviceready 事件发生之前不可用。

document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
    console.log(device.cordova);
}

安装

cordova plugin add cordova-plugin-device

属性

  • device.cordova
  • device.model
  • device.platform
  • device.uuid
  • device.version
  • device.manufacturer
  • device.isVirtual
  • device.serial
  • device.sdkVersion (仅限 Android)

device.cordova

返回应用程序中捆绑的 Cordova 平台版本。

版本信息来自 cordova.js 文件。

此属性不显示其他已安装平台的版本信息。仅显示相应的运行平台的版本。

示例

如果 Cordova Android 10.1.1 安装在 Cordova 项目中,则 Android 应用程序中的 cordova.js 文件将包含 10.1.1

device.cordova 属性将显示 10.1.1

支持的平台

  • Android
  • 浏览器
  • iOS
  • Windows
  • OS X

device.model

device.model 返回设备型号或产品的名称。该值由设备制造商设置,并且在同一产品的不同版本中可能有所不同。

支持的平台

  • Android
  • 浏览器
  • iOS
  • Windows
  • OS X

快速示例

// Android: Pixel 4             returns "Pixel 4"
//          Motorola Moto G3    returns "MotoG3"
// Browser: Google Chrome       returns "Chrome"
//          Safari              returns "Safari"
// iOS:     iPad Mini           returns "iPad2,5"
//          iPhone 5            returns "iPhone5,1"
// See https://www.theiphonewiki.com/wiki/Models
// OS X:                        returns "x86_64"
//
var model = device.model;

Android 特性

iOS 特性

型号值基于 Apple 提供的标识符。

如果您需要确切的设备名称,例如 iPhone 13 Pro Max,则需要创建一个映射器来将已知的标识符转换为关联的设备名称。

示例:标识符 iPhone14,3 与设备 iPhone 13 Pro Max 相关联。

有关所有标识符到设备名称的完整列表,请参见 此处

device.platform

获取设备的操作系统名称。

var string = device.platform;

支持的平台

  • Android
  • 浏览器
  • iOS
  • Windows
  • OS X

快速示例

// Depending on the device, a few examples are:
//   - "Android"
//   - "browser"
//   - "iOS"
//   - "WinCE"
//   - "Mac OS X"
//
var devicePlatform = device.platform;

device.uuid

获取设备的通用唯一标识符 (UUID).

var string = device.uuid;

描述

UUID 生成方式的详细信息由设备制造商确定,并且特定于设备的平台或型号。

支持的平台

  • Android
  • iOS
  • Windows
  • OS X

快速示例

// Android: Returns a random 64-bit integer (as a string, again!)
//
// iOS: (Paraphrased from the UIDevice Class documentation)
//         Returns the [UIDevice identifierForVendor] UUID which is unique and the same for all apps installed by the same vendor. However the UUID can be different if the user deletes all apps from the vendor and then reinstalls it.
//
// Windows Phone 7 : Returns a hash of device+current user,
// if the user is not defined, a guid is generated and will persist until the app is uninstalled
//
var deviceID = device.uuid;

Android 特性

Android 上的 uuid 是一个 64 位整数(以十六进制字符串表示)。此 uuid 的行为在两个不同的操作系统版本上有所不同 -

对于 < Android 8.0(API 级别 26)

在低于 Android 8.0 的平台版本中,uuid 在用户首次设置设备时随机生成,并且应该在用户设备的整个生命周期内保持不变。

对于 Android 8.0 或更高版本

上述行为在 Android 8.0 中发生了改变。详细阅读 此处

在 Android 8.0 及更高版本中,uuid 将对应用程序签名密钥、用户和设备的每个组合都是唯一的。该值由签名密钥和用户限定。如果对设备执行了出厂重置或 APK 签名密钥发生更改,则该值可能会更改。

在此处了解更多信息 https://android-docs.cn/reference/android/provider/Settings.Secure#ANDROID_ID。

iOS 特性

iOS 上的 uuid 使用 identifierForVendor 属性。它在同一供应商的设备上是唯一的,但在不同的供应商之间将不同,并且如果删除了供应商的所有应用程序然后重新安装,它将发生更改。有关详细信息,请参见 此处。如果应用程序从备份或 iCloud 恢复,则 UUID 将相同,因为它保存在首选项中。使用此插件的旧版本的用户仍将收到由其他方式生成的相同先前 UUID,因为它将从首选项中检索。

OS X 特性

如果 OS X 上的 uuid 不存在,则会自动生成并存储在 standardUserDefaults 中的 CDVUUID 属性中。

device.version

获取操作系统版本。

var string = device.version;

支持的平台

  • Android
  • 浏览器
  • iOS
  • Windows
  • OS X

快速示例

// Android:    Froyo OS would return "2.2"
//             Eclair OS would return "2.1", "2.0.1", or "2.0"
//             Version can also return update level "2.1-update1"
//
// Browser:    Returns version number for the browser
//
// iOS:     iOS 3.2 returns "3.2"
//
// Windows 8: return the current OS version, ex on Windows 8.1 returns 6.3.9600.16384
//
// OS X:        El Capitan would return "10.11.2"
//
var deviceVersion = device.version;

device.manufacturer

获取设备的制造商。

var string = device.manufacturer;

支持的平台

  • Android
  • iOS
  • Windows

快速示例

// Android:    Motorola XT1032 would return "motorola"
// iOS:     returns "Apple"
//
var deviceManufacturer = device.manufacturer;

device.isVirtual

设备是否在模拟器上运行。

var isSim = device.isVirtual;

device.sdkVersion (仅限 Android)

获取 Android 设备的 SDK 版本 (SDK_INT).

支持的平台

  • Android

OS X 和浏览器特性

OS X 和浏览器上的 isVirtual 属性始终返回 false。

device.serial

获取设备硬件序列号 (SERIAL).

var string = device.serial;

支持的平台

  • Android
  • OS X

Android 特性

从 Android 9 开始,为 uuid 属性提供支持的底层原生 API 已被弃用,并且在没有适当权限的情况下将始终返回 UNKNOWN。Cordova 从未实现处理所需权限。从 Android 10 开始,所有不可重置的设备标识符不再可供普通应用程序读取,并且将始终返回 UNKNOWN。更多信息可以 在此处阅读

device.isiOSAppOnMac

iOS 应用程序正在 Mac 桌面(Apple Silicon ARM64 处理器,M1 或更新版本)上运行。此参数仅针对 iOS V14.0 或更高版本返回,并且不会针对 Android 设备返回。

var boolean = device.isiOSAppOnMac;

支持的平台

  • iOS