更新记录

1.0.0(2026-03-26)

首次发布跨端设备标识获取插件 支持Android、iOS、HarmonyOS三大平台 提供统一的异步/同步API接口 实现OAID、IDFA、ODID等常用设备标识获取 完善错误处理和缓存机制


平台兼容性

uni-app(4.0)

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

uni-app x(4.0)

Chrome Safari Android Android插件版本 iOS iOS插件版本 鸿蒙 鸿蒙插件版本 微信小程序
× × 5.0 1.0.0 14 1.0.0 6.0 1.0.0 -

其他

多语言 暗黑模式 宽屏模式
×

wt-device-id

简介

wt-device-id 提供跨端的设备标识获取能力,支持:

  • Android:AndroidIdOAID
  • iOS:IDFVIDFA(ATT 授权)
  • HarmonyOS:ODIDAAID

说明:不同平台的“统一入口 getDeviceId”策略不同,见下方平台说明。

支持的平台与返回策略

  • Android
    • getDeviceId/getDeviceIdSync:返回 AndroidId(不自动取 OAID)
    • OAID 需要调用 getOaid/getOaidSyncgetOaidSync 读取上次异步成功后的缓存)
  • iOS
    • getDeviceId/getDeviceIdSync:返回 IDFV
    • 不支持 OAID(调用 getOaid/getOaidSync 会失败/返回空)
    • getIdfa 会根据授权状态触发 ATT,并在 30 秒内获取;getIdfaSync 仅在已授权时返回有效值
  • HarmonyOS
    • getDeviceId/getDeviceIdSync:优先 ODID,失败则降级到 AAID

类型与回调

所有异步 API 的 options 结构为:

{
  success?: (result: { deviceId: string; idType: ...; success: boolean; errorMsg?: string }) => void
  fail?: (error: { deviceId: string; idType: ...; success: boolean; errorMsg?: string }) => void
  complete?: (result: { deviceId: string; idType: ...; success: boolean; errorMsg?: string }) => void
}

API 列表

通用

  • getDeviceId(options):异步获取通用设备 ID(Android=AndroidId,iOS=IDFV,Harmony=ODID>AAID)
  • getDeviceIdSync():同步获取通用设备 ID
  • getDeviceInfo():获取设备基本信息(品牌/型号/系统等)

Android

  • getAndroidId(options) / getAndroidIdSync()
  • getOaid(options):异步获取 OAID(成功后会写入缓存)
  • getOaidSync():读取缓存(首次或未成功调用过 getOaid 时为空字符串)

iOS

  • getIdfv(options) / getIdfvSync()
  • getIdfa(options):异步获取 IDFA(ATT 授权;超时兜底 30 秒)
  • getIdfaSync():仅在授权状态为“已授权”时返回有效 IDFA,否则返回空字符串
  • checkIdfaAuthStatus():返回授权状态(0 未决定 / 1 受限 / 2 拒绝 / 3 已授权)
  • canGetIdfa():是否可以直接获取 IDFA(等价于 checkIdfaAuthStatus()==3
  • requestTrackingAuthorization(callback):主动请求 ATT 授权

HarmonyOS

  • getOdid(options) / getOdidSync()
  • getAaid(options):获取 AAID
  • getHarmonyDeviceId(options):ODID > AAID 自动降级

调用示例

Android 获取 OAID(推荐)

import { getOaid, getOaidSync } from '@/uni_modules/wt-device-id'

// 异步获取并写入缓存
getOaid({
  success: (res) => {
    console.log('oaid=', res.deviceId)
    // 后续可同步读取缓存
    console.log('oaid sync=', getOaidSync())
  },
  fail: (err) => {
    console.log('oaid fail=', err.errorMsg)
  }
})

iOS 获取 IDFA

import { getIdfa } from '@/uni_modules/wt-device-id'

getIdfa({
  success: (res) => console.log('idfa=', res.deviceId),
  fail: (err) => console.log('idfa fail=', err.errorMsg)
})

注意事项

  • getOaid/getOaidSync 仅 Android 支持;iOS 调用会失败/返回空。
  • getOaidSync 依赖 getOaid 的异步成功缓存;未成功前为 ''
  • getIdfaSync 只有在 ATT 已授权时才会返回有效值,否则为 ''
  • 建议不要把 options.success/fail/complete 写成 async 函数(否则在某些桥接场景下可能导致回调绑定失败)。

开发文档

UTS 语法 UTS API插件 UTS uni-app兼容模式组件 UTS 标准模式组件 Hello UTS

隐私、权限声明

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

iOS: <!-- IDFA 访问权限描述 (iOS 14+) --> <!-- App Tracking Transparency 授权弹窗显示的说明文字 --> <key>NSUserTrackingUsageDescription</key> <string>该标识符将用于向您推送个性化广告和内容服务</string> Android:<!-- Android_CN_OAID 库 4.1.1+ 默认声明了以下权限用于低版本 Android 的 IMEI/GUID 获取。 本插件仅使用 OAID/AndroidId,不需要这些权限,主动移除避免隐私合规问题。 --> <uses-permission android:name="android.permission.READ_PHONE_STATE" tools:node="remove" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" tools:node="remove" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:node="remove" /> Harmony: /** * HarmonyOS module.json5 权限配置示例 * 请将以下权限配置添加到您项目的 entry/src/main/module.json5 文件中 */ { "module": { "name": "entry", "type": "entry", // ... 其他配置 // 权限配置 "requestPermissions": [ { // OAID 获取需要此权限 "name": "ohos.permission.APP_TRACKING_CONSENT", "reason": "$string:tracking_reason", "usedScene": { "abilities": ["EntryAbility"], "when": "always" } } ] } } /** * 同时需要在 entry/src/main/resources/base/element/string.json 中添加权限说明: * * { * "string": [ * { * "name": "tracking_reason", * "value": "此权限用于获取设备标识符,以便为您提供个性化服务" * } * ] * } */

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

插件不采集任何数据

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