更新记录
1.0.2(2026-08-20)
- 修复 iOS 云打包
load_transformed failed:恢复 index.uts 对 DeviceBridge.swift 的显式 import,确保混编 Swift 源码被云端编译器正确解析。
1.0.1(2026-08-12)
- 新增
register(options?),隐私同意后显式预取;Vue 侧须 { success } 对象形式;getter 不再自动 register。
- 五端统一用
getDeviceId().id 作业务唯一标识;Web/MP:id 完整指纹、osId 精简指纹、deviceId Storage UUID。
- Web 新增
StorageBridge;微信小程序新增 DeviceBridge;移除 uni.* 依赖。
- App 端修复 register 回调、OAID Maven 仓库与 3s 超时;Harmony ArkTS 混编与 OAID 兜底;iOS 混编 import 修复。
- 过滤无效标识(全零 UUID 等);补全设备信息字段;更新示例与文档。
1.0.0(2026-07-08)
- 首发:Android / iOS / HarmonyOS / Web / 微信小程序五端设备标识与设备信息。
- 公开 API:
getDeviceId、getPlatformInfo、getDeviceInfo(各含 Sync 版本)。
getDeviceId 返回 id / idType / osId / osType;类型 XviewUniqueIdInfo。
- Android:OAID → AndroidID → WidevineID → UUID;iOS:IDFA → IDFV → Keychain UUID;HarmonyOS:OAID → ODID → UUID。
- Web / 微信小程序:纯环境指纹(
fingerprint),不依赖 Storage。
getDeviceInfo 对齐 uni.getDeviceInfo 常用字段;getPlatformInfo 提供平台概要。
- 提供 uni-app 与 uni-app x 示例页面。
查看更多
平台兼容性
uni-app(5.06)
| Vue2 |
Vue2插件版本 |
Vue3 |
Vue3插件版本 |
Chrome |
Chrome插件版本 |
Safari |
Safari插件版本 |
app-vue |
app-vue插件版本 |
app-nvue |
app-nvue插件版本 |
Android |
Android插件版本 |
iOS |
iOS插件版本 |
鸿蒙 |
鸿蒙插件版本 |
| √ |
1.0.0 |
√ |
1.0.0 |
√ |
1.0.0 |
√ |
1.0.0 |
√ |
1.0.0 |
√ |
1.0.0 |
5.0 |
1.0.0 |
12 |
1.0.0 |
√ |
1.0.0 |
| 微信小程序 |
微信小程序插件版本 |
支付宝小程序 |
抖音小程序 |
百度小程序 |
快手小程序 |
京东小程序 |
鸿蒙元服务 |
QQ小程序 |
飞书小程序 |
小红书小程序 |
快应用-华为 |
快应用-联盟 |
| √ |
1.0.0 |
× |
× |
× |
× |
× |
× |
× |
× |
× |
× |
× |
uni-app x(5.06)
| Chrome |
Chrome插件版本 |
Safari |
Safari插件版本 |
Android |
Android插件版本 |
iOS |
iOS插件版本 |
鸿蒙 |
鸿蒙插件版本 |
微信小程序 |
微信小程序插件版本 |
| √ |
1.0.0 |
√ |
1.0.0 |
5.0 |
1.0.0 |
12 |
1.0.0 |
√ |
1.0.0 |
√ |
1.0.0 |
XView 跨平台设备唯一标识获取、OAID、IDFV、ODID
跨平台 UTS 设备标识插件,覆盖 Android、iOS、HarmonyOS、Web、微信小程序。
提供统一的 register、getDeviceId、getPlatformInfo、getDeviceInfo API(各含 Sync 版本),适用于业务去重、设备信息展示与统计分析。
安装
将 uni_modules/xview-device 放入项目后,App 端需制作自定义调试基座(UTS 原生插件不会打进默认基座)。
import {
register,
getDeviceId,
getDeviceIdSync,
getPlatformInfo,
getPlatformInfoSync,
getDeviceInfo,
getDeviceInfoSync,
type XviewUniqueIdInfo,
type XviewRegisterOptions
} from '@/uni_modules/xview-device'
核心概念
五端业务统一使用 getDeviceId().id 作为唯一标识。
| 字段 |
含义 |
id |
唯一 ID,业务去重主 ID,各平台按兜底链选取 |
idType |
id 的来源类型 |
osId |
OS 层主标识(App 为系统 ID;Web/MP 为精简环境指纹) |
osType |
osId 的来源类型 |
deviceId |
插件持久 UUID(getDeviceInfo 返回;Web/MP 存 Storage) |
各平台标识策略
| 平台 |
id 兜底链 |
osId |
deviceId 存储 |
| Android |
OAID → AndroidID → WidevineID → UUID |
AndroidID → UUID |
SharedPreferences |
| iOS |
IDFA → IDFV → Keychain UUID |
IDFV → UUID |
Keychain |
| HarmonyOS |
OAID → ODID → UUID |
ODID → UUID |
Preferences |
| Web |
完整环境指纹 → UUID |
精简环境指纹 → UUID |
localStorage |
| 微信小程序 |
完整环境指纹 → UUID |
精简环境指纹 → UUID |
wx Storage |
公开 API
| 方法 |
说明 |
register(options?) |
隐私同意后显式调用;Android/Harmony 预取 OAID,iOS 触发 ATT,Web/MP 预热 Storage |
getDeviceId(callback) |
异步获取设备唯一标识 |
getDeviceIdSync() |
同步获取设备唯一标识 |
getPlatformInfo(callback) |
异步获取平台概要 |
getPlatformInfoSync() |
同步获取平台概要 |
getDeviceInfo(callback) |
异步获取设备字段(对齐 uni.getDeviceInfo 常用项) |
getDeviceInfoSync() |
同步获取设备字段 |
register 参数
type XviewRegisterOptions = {
success?: () => void // 注册完成后回调(推荐)
complete?: () => void // 与 success 等价
}
重要:
- uni-app Vue 侧请使用
register({ success: () => {} }),不要 register(() => {}),否则 App 端回调可能不触发。
register() 不会在 getDeviceId 等 getter 内部自动调用,需业务在隐私同意后显式调用。
返回结构
XviewUniqueIdInfo
| 字段 |
说明 |
id |
业务去重 ID |
idType |
oaid / androidId / widevineId / idfa / idfv / odid / uuid / fingerprint / none |
osId |
OS 层标识;Web/MP 为精简环境指纹 |
osType |
androidId / idfv / odid / uuid / fingerprint / none |
XviewPlatformInfo
| 字段 |
说明 |
platform |
Android / iOS / HarmonyOS / Web / MP-WEIXIN |
brand |
设备品牌 |
model |
设备型号 |
systemName |
系统名称 |
systemVersion |
系统版本 |
XviewDeviceInfo
| 字段 |
说明 |
deviceId |
插件持久 UUID |
deviceType |
phone / pad / pc 等 |
deviceOrientation |
portrait / landscape |
devicePixelRatio |
设备像素比 |
osName |
如 android、ios、harmonyos |
osVersion |
系统版本 |
screenWidth / screenHeight |
屏幕宽高(px) |
statusBarHeight |
状态栏高度(px);Web 等为 0 |
uniPlatform |
app / web / mp-weixin |
推荐调用流程
// 1. 用户同意隐私政策
register({
success: () => {
// 2. 读取业务唯一标识
getDeviceId((info: XviewUniqueIdInfo) => {
console.log('唯一标识:', info.id, info.idType)
console.log('OS 标识:', info.osId, info.osType)
})
}
})
同步读取:
const info = getDeviceIdSync()
const platform = getPlatformInfoSync()
const device = getDeviceInfoSync()