更新记录

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()

隐私、权限声明

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

无

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

插件不采集任何数据

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

无