更新记录

1.0.1(2026-05-11)

支持获取 OAID

1.0.0(2026-05-11)

  • 初始版本
  • 插件名调整为 hl-deviceid-uts
  • 支持获取设备聚合标识信息
  • 支持获取 deviceUniqueIdOAIDAndroidID
  • 支持 Android / iOS / Harmony 三端
  • 新增 getDeviceIdentifierInfoAsync(),用于 Harmony 异步获取 OAID

平台兼容性

uni-app(5.0)

Vue2 Vue3 Chrome Safari app-vue app-vue插件版本 app-nvue app-nvue插件版本 Android Android插件版本 iOS 鸿蒙
- - - - 1.0.1 1.0.1 5.1 1.0.1 - -
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
- - - - - - - - - - - -

hl-deviceid-uts

读取设备唯一标识、OAIDAndroidID 的 UTS 插件,当前支持 Android、iOS。

功能

  • 获取聚合后的设备标识信息 getDeviceIdentifierInfo()
  • 获取聚合后的设备标识信息 getDeviceIdentifierInfoAsync()
  • 获取设备唯一标识 getDeviceUniqueId()
  • 获取 OAID
  • 获取 AndroidID
  • 获取 IDFV(通过 getDeviceIdentifierInfo().idfv 读取)

安装与引用

import * as DeviceId from '@/uni_modules/hl-deviceid-uts'

使用示例

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)

const deviceUniqueId = DeviceId.getDeviceUniqueId()
const oaid = DeviceId.getOAID()
const androidId = DeviceId.getAndroidID()

DeviceId.getDeviceIdentifierInfoAsync((asyncInfo) => {
  console.log('async oaid', asyncInfo.oaid)
})

返回结构

type DeviceIdentifierInfo = {
  platform: string
  deviceUniqueId: string
  deviceUniqueIdSource: string
  oaid: string | null
  androidId: string | null
  idfv: string | null
  oaidSupported: boolean
}

字段说明

  • deviceUniqueId Android 优先取 OAID,其次取 AndroidID,最后回退到插件持久化生成的 UUID。 iOS 优先取 IDFV,取不到时回退到插件持久化生成的 UUID。
  • deviceUniqueIdSource 标识 deviceUniqueId 的来源。 Android 可取 oaidandroidIdgenerated。 iOS 可取 idfvgenerated
  • oaid Android 设备上尝试读取 OAID;读取失败或当前环境不可用时返回 null。 iOS 固定返回 null
  • androidId Android 设备上返回 AndroidID;读取失败时返回 null。 iOS 固定返回 null
  • idfv iOS 端返回 UIDevice.current.identifierForVendor?.uuidString。 Android 端固定返回 null

平台支持

  • 当前支持 Android、iOS。
  • getDeviceIdentifierInfoAsync() 当前是对同步结果的回调封装,方便前端统一调用方式。

Android 说明

  • Android 端优先读取 OAID,读取不到时回退到 AndroidID,再取不到时回退到插件本地生成并持久化保存的 UUID。
  • Android 端集成本地 Android_CN_OAID-4.2.16.aar,文件位于 utssdk/app-android/libs/
  • OAID 厂商适配由 Android_CN_OAID 提供,插件会尽量覆盖其已支持的厂商通道,包括华为、荣耀、小米、OPPO、一加、vivo、三星、魅族、联想、摩托罗拉、努比亚、华硕、酷派、360OS,以及 MSA / GMS 等通用通道。
  • 当前 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 仓库。
  • mavenRepos 使用纯 URL 字符串,例如 https://developer.hihonor.com/repo/,避免打包脚本把 maven { url '...' } 片段误识别成本地目录。
  • 如果运行包缺少 com.huawei.hms.ads.identifier.AdvertisingIdClientcom.hihonor.ads.identifier.AdvertisingIdClient,对应设备会跳过 OAID 读取并回退到 AndroidID/generated,避免因为类缺失导致应用崩溃。

iOS 说明

  • iOS 端 deviceUniqueId 默认取 IDFV,即 UIDevice.current.identifierForVendor?.uuidString
  • IDFV 不可用时,会回退到插件本地生成并持久化保存的 UUID。
  • iOS 端 getOAID()getAndroidID() 固定返回 null
  • IDFV 属于 Vendor 维度标识;同一设备上同一开发者账号下的 App 通常一致。
  • 如果当前 Vendor 下的所有 App 都被卸载后重新安装,IDFV 可能变化。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

暂无用户评论。