更新记录
1.0.7(2026-06-18)
api优化
1.0.6(2026-06-11)
增加设备品牌信息返回
1.0.5(2026-05-13)
android oaid同步获取优化
查看更多平台兼容性
uni-app(5.0)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-vue插件版本 | app-nvue | app-nvue插件版本 | Android | Android插件版本 | iOS | iOS插件版本 | 鸿蒙 | 鸿蒙插件版本 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| - | - | - | - | √ | 1.0.6 | √ | 1.0.6 | 5.0 | 1.0.6 | 12 | 1.0.6 | 12 | 1.0.6 |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - | - | - | - | - |
uni-app x(5.0)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| - | - | - | - | - | - |
hl-deviceid-uts
读取设备唯一标识、OAID、AndroidID、设备品牌信息的 UTS 插件,当前支持 Android、iOS、HarmonyOS。
功能
- 获取聚合后的设备标识信息
getDeviceIdentifierInfo() - 获取聚合后的设备标识信息
getDeviceIdentifierInfoAsync() - 获取设备唯一标识
getDeviceUniqueId() - 获取
OAID - 获取
AndroidID - 获取
IDFV(通过getDeviceIdentifierInfo().idfv读取) - 获取设备品牌信息(通过
getDeviceIdentifierInfo().brand/.model/.systemName/.systemVersion读取)
安装与引用
import * as DeviceId from '@/uni_modules/hl-deviceid-uts'
使用示例
// Android / iOS 可以直接同步读取当前结果。
const info = DeviceId.getDeviceIdentifierInfo()
console.log('deviceUniqueId', info.deviceUniqueId)
console.log('deviceUniqueIdSource', info.deviceUniqueIdSource)
console.log('oaid', info.oaid)
console.log('androidId', info.androidId)
console.log('idfv', info.idfv)
console.log('oaidSupported', info.oaidSupported)
console.log('brand', info.brand)
console.log('model', info.model)
console.log('systemName', info.systemName)
console.log('systemVersion', info.systemVersion)
const deviceUniqueId = DeviceId.getDeviceUniqueId()
const oaid = DeviceId.getOAID()
const androidId = DeviceId.getAndroidID()
// Android 等待厂商 OAID 服务回调、HarmonyOS 首次获取 OAID 时,建议优先使用异步接口。
DeviceId.getDeviceIdentifierInfoAsync((asyncInfo) => {
console.log('async oaid', asyncInfo.oaid)
console.log('async deviceUniqueId', asyncInfo.deviceUniqueId)
console.log('async source', asyncInfo.deviceUniqueIdSource)
})
返回结构
type DeviceIdentifierInfo = {
platform: string
deviceUniqueId: string
deviceUniqueIdSource: string
oaid: string | null
androidId: string | null
idfv: string | null
oaidSupported: boolean
brand: string
model: string
systemName: string
systemVersion: string
}
字段说明
deviceUniqueIdAndroid 优先取OAID,其次取AndroidID,最后回退到插件持久化生成的 UUID。 iOS 优先取IDFV,取不到时回退到插件持久化生成的 UUID。 HarmonyOS 优先取OAID,取不到时回退到插件持久化生成的 UUID。deviceUniqueIdSource标识deviceUniqueId的来源。 Android 可取oaid、androidId、generated。 iOS 可取idfv、generated。 HarmonyOS 可取oaid、generated。oaidAndroid / HarmonyOS 设备上尝试读取 OAID;读取失败、未授权或当前环境不可用时返回null。 iOS 固定返回null。androidIdAndroid 设备上返回AndroidID;读取失败时返回null。 iOS / HarmonyOS 固定返回null。idfviOS 端返回UIDevice.current.identifierForVendor?.uuidString。 Android / HarmonyOS 固定返回null。brandAndroid 返回Build.BRAND(如Xiaomi、HUAWEI、samsung)。 iOS 固定返回Apple。 HarmonyOS 返回deviceInfo.brand(如HUAWEI)。modelAndroid 返回Build.MODEL(如MI 10、VOG-AL00)。 iOS 返回设备硬件型号(如iPhone14,2,通过sysctlbyname("hw.machine")读取)。 HarmonyOS 返回deviceInfo.deviceModel。systemNameAndroid 固定返回Android。 iOS 返回UIDevice.current.systemName(即iOS)。 HarmonyOS 固定返回HarmonyOS。systemVersionAndroid 返回Build.VERSION.RELEASE(如13)。 iOS 返回UIDevice.current.systemVersion(如17.0)。 HarmonyOS 返回deviceInfo.osFullName(如5.0.0)。
平台支持
- 当前支持 Android、iOS、HarmonyOS。
getDeviceIdentifierInfoAsync()在 Android / HarmonyOS 端会异步读取 OAID;iOS 当前是对同步结果的回调封装,方便前端统一调用方式。
调用建议
- Android:可直接调用
getDeviceIdentifierInfo()、getDeviceUniqueId()、getOAID()、getAndroidID();如果希望等待厂商 OAID 服务回调,建议使用getDeviceIdentifierInfoAsync()。 - iOS:可直接调用
getDeviceIdentifierInfo()或getDeviceUniqueId(),返回的deviceUniqueId默认来自IDFV。 - HarmonyOS:首次获取 OAID 建议调用
getDeviceIdentifierInfoAsync(),因为读取前需要检查/请求APP_TRACKING_CONSENT权限。 - HarmonyOS:
getDeviceIdentifierInfo()、getDeviceUniqueId()、getOAID()是同步读取当前缓存/回退值;如果还没有调用过异步接口,可能先返回本地生成的 UUID 或null。 - 前端展示时建议只展示有值字段;
oaid === null表示当前没有拿到可用 OAID,不代表接口异常。
Android 说明
- Android 端优先读取
OAID,读取不到时回退到AndroidID,再取不到时回退到插件本地生成并持久化保存的 UUID。 - Android 端集成本地
Android_CN_OAID-4.2.16.aar,文件位于utssdk/app-android/libs/。 - OAID 厂商适配由
Android_CN_OAID提供,当前覆盖华为、荣耀、小米 / Redmi / 黑鲨、vivo、OPPO / 一加 / realme、三星、联想 / 摩托罗拉、华硕、魅族、努比亚、酷派、360OS,以及 Coosea、Freeme、MSA / GMS 等通道。 - Android 端
getDeviceIdentifierInfoAsync()会调用Android_CN_OAID的原生异步回调,适合三星、联想、华硕、OPPO / 一加、酷派等需要绑定系统服务的厂商通道。 - 当前 Android 工程内置的
oaid_sdk_1.0.25.aar已包含华为com.huawei.hms.ads.identifier.AdvertisingIdClient,插件不再额外声明com.huawei.hms:ads-identifier,避免重复类冲突。 - 荣耀设备读取 OAID 需要
com.hihonor.mcs:ads-identifier,插件已在utssdk/app-android/config.json中声明对应依赖和荣耀 Maven 仓库。 - 如果运行包缺少
com.huawei.hms.ads.identifier.AdvertisingIdClient或com.hihonor.ads.identifier.AdvertisingIdClient,对应设备会跳过 OAID 读取并回退到AndroidID/generated,避免因为类缺失导致应用崩溃。 - 各厂商系统可能因为区域版本、隐私设置、系统服务缺失或用户关闭广告标识而返回空值;这种情况下插件会继续按
AndroidID/generated回退。
iOS 说明
- iOS 端
deviceUniqueId默认取IDFV,即UIDevice.current.identifierForVendor?.uuidString。 - 当
IDFV不可用时,会回退到插件本地生成并持久化保存的 UUID。 - iOS 端
getOAID()、getAndroidID()固定返回null。 IDFV属于 Vendor 维度标识;同一设备上同一开发者账号下的 App 通常一致。- 如果当前 Vendor 下的所有 App 都被卸载后重新安装,
IDFV可能变化。
HarmonyOS 说明
- HarmonyOS 端优先通过 Ads Kit 的
identifier.getOAID()读取 OAID,失败时回退到本地@hw-ads/ohos-oaid桥接能力。 - 获取 OAID 需要声明
ohos.permission.APP_TRACKING_CONSENT权限,插件已在utssdk/app-harmony/module.json5中声明,并在resources/base/element/string.json中补充权限用途说明。 getDeviceIdentifierInfoAsync()会检查并请求APP_TRACKING_CONSENT后读取 OAID;建议 HarmonyOS 端优先使用异步接口获取最新 OAID。- 异步接口获取成功后会缓存结果,后续同步调用
getDeviceIdentifierInfo()、getDeviceUniqueId()、getOAID()会返回最近一次缓存结果。 - 如果用户未授权、关闭跨应用关联/跟踪,或系统返回
00000000-0000-0000-0000-000000000000,插件会按无效 OAID 处理,并回退到本地生成的 UUID。 - HarmonyOS 端固定不返回
AndroidID和IDFV,对应字段为null。

收藏人数:
购买源码授权版(
试用
赞赏(0)
下载 276
赞赏 2
下载 12332157
赞赏 1924
赞赏
京公网安备:11010802035340号