更新记录
1.0.3(2026-07-28)
- 新增
getAppInstallId()和getAppInstallIdSync(),可直接读取插件维护的应用安装 ID,不再依赖 ANDROID_ID / IDFV 的来源优先级。 - Android、iOS、HarmonyOS、Web、微信小程序和支付宝小程序统一返回
source=appInstallId、scope=app的结构化结果。 - Web 与小程序存储不可用时复用进程级临时 ID,并返回
9050004诊断;重置未持久化时明确返回失败,不伪造成功。 - uni-app 与 uni-app x 示例新增“读取安装标识”,重置后直接展示新安装 ID,形成读取、重置、再次读取的完整验收链路。
- 保持既有
privacy / stable / advertising行为不变,不新增权限、三方 SDK、Manifest 或广告标识采集。
1.0.2(2026-07-28)
- HarmonyOS 本地安装 ID 改为使用应用沙箱 Preferences 持久化,杀进程或普通重启后继续返回同一标识。
resetAppInstallId()在新 ID 同步落盘后才返回成功;持久化存储不可用时返回失败并明确说明仅当前进程有效。- 保持既有公共 API 和 Android / iOS / Web / 小程序行为不变,不接入 ODID、AAID、OAID,不新增权限或三方 SDK。
- 补充 HarmonyOS 重启验收提示、发布守卫和持久化专项守卫;最终跨进程稳定性仍需 HarmonyOS 真机安装新包验证。
1.0.1(2026-06-25)
- 对齐 uni-app x 示例页与 uni-app 示例页,补齐当前结果、能力矩阵、隐私优先、稳定标识、广告标识检测、重置安装标识和运行日志。
- 修复 uni-app x 示例页只能输出简单日志、缺少结构化状态展示的问题,便于真机调试设备标识来源、权限状态和策略诊断。
- 通过 Android USB 自定义基座验证:privacy / stable 均返回
ANDROID_ID,advertising 返回未集成 OAID SDK 的结构化诊断,reset 成功重置本地安装 ID 并自动刷新 privacy 结果。 - 本版本未修改公共 API、根入口、Android/iOS/Harmony/Web/小程序平台实现或 uni-app 示例。
平台兼容性
uni-app(4.84)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | √ | √ | √ | √ |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| √ | √ | × | × | × | × | × | × | × | × | × | × |
uni-app x(4.84)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | √ |
设备唯一标识 UTS插件
lizhao-device-id 是一个面向 uni-app / uni-app x 的设备唯一标识 UTS插件,用于在 Android、iOS、HarmonyOS 中获取可解释、可诊断、可重置边界清晰的设备标识。
功能特色
- 三端统一:Android / iOS / HarmonyOS 使用同一套 API。
- 结构化返回:不仅返回
id,还返回source、scope、permissionStatus、resetHint、rawAvailable等字段。 - Harmony 持久化:HarmonyOS 本地安装 ID 写入应用沙箱 Preferences,杀进程或普通重启后保持不变。
- 安装 ID 直读:可直接读取插件本地安装 ID,与重置 API 形成完整闭环,不受 ANDROID_ID / IDFV 来源优先级影响。
- 合规优先:默认不默认读取 IMEI、MEID、MAC、Serial、UDID 等高风险硬件标识。
- 广告标识隔离:OAID / IDFA 只在
advertising策略中返回能力诊断,不默认集成广告 SDK。 - 可诊断:业务能清楚知道当前 ID 来自 AndroidId、IDFV、本地安装 ID,还是平台降级。
接入方式选择
| 场景 | 推荐策略 | 说明 |
|---|---|---|
| 设备统计、匿名风控、普通业务去重 | privacy |
默认策略,优先使用平台合规作用域 ID,失败时回落本地安装 ID |
| 希望 App 生命周期内尽量稳定 | stable |
与 privacy 同一安全链路,文档中明确重置边界 |
| 匿名账号、安装级去重、本地数据关联 | getAppInstallIdSync() |
直接读取应用沙箱安装 ID;主动重置、卸载或清除数据后会变化 |
| 广告归因、投放监测 | advertising |
仅返回 OAID / IDFA 能力诊断;需业务单独接入 SDK、权限和隐私政策 |
| 想读取 IMEI / MAC / Serial | 不推荐 | 插件默认不提供,避免现代系统限制和审核风险 |
最小可运行示例
import { getDeviceIdSync } from '@/uni_modules/lizhao-device-id'
// 默认 privacy 策略:优先返回平台合规作用域 ID,失败时回落本地安装 ID。
const result = getDeviceIdSync({
strategy: 'privacy',
includeRawId: false
})
console.log('设备标识', result.id, result.source, result.resetHint)
读取应用安装 ID
import { getAppInstallIdSync } from '@/uni_modules/lizhao-device-id'
// 安装级匿名标识不读取 ANDROID_ID、IDFV 或广告标识。
const result = getAppInstallIdSync()
console.log('应用安装 ID', result.id, result.source, result.resetHint)
应用安装 ID 适合匿名账号、本地缓存关联和安装级去重,但不能视为永久设备身份。主动调用 resetAppInstallId()、卸载应用或清除应用数据后,该值会变化。
异步回调示例
import { getDeviceId } from '@/uni_modules/lizhao-device-id'
// 兼容 uni API 风格:success / fail / complete 均可选。
getDeviceId({
strategy: 'stable',
success(res) {
console.log('获取成功', res)
},
fail(err) {
console.log('获取失败', err)
},
complete(res) {
console.log('获取完成', res)
}
})
能力诊断示例
import { getDeviceIdCapability } from '@/uni_modules/lizhao-device-id'
// 用于上线前展示平台能力,也适合写入售后诊断日志。
const capability = getDeviceIdCapability()
console.log(capability.platform, capability.sources, capability.message)
API
getDeviceId(options)
说明 异步获取设备标识。
支持平台 Android / iOS / HarmonyOS / Web / 微信小程序 / 支付宝小程序
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | DeviceIdOptions | 否 | 获取设备标识的参数对象 | { strategy: 'privacy' } |
strategy / includeRawId / success / fail / complete |
| options.strategy | string | 否 | 获取策略 | privacy |
privacy / stable / advertising |
| options.includeRawId | boolean | 否 | 是否返回原始平台标识到 rawId |
false |
true / false |
| options.success | function | 否 | 成功回调,返回 DeviceIdResult |
无 | 无 |
| options.fail | function | 否 | 失败回调,返回 DeviceIdFail |
无 | 无 |
| options.complete | function | 否 | 完成回调 | 无 | 无 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| supported | boolean | 当前平台是否支持本次策略的真实标识能力 |
| platform | string | 当前平台,如 app-android、app-ios、app-harmony |
| id | string | 设备标识字符串 |
| source | string | 标识来源,如 androidId、idfv、appInstallId、oaid |
| scope | string | 标识作用域,如 app、vendor、advertising |
| strategy | string | 本次使用策略 |
| isResettable | boolean | 是否属于可重置标识 |
| requiresPermission | boolean | 当前策略是否需要额外权限或授权 |
| permissionStatus | string | 权限或 SDK 状态 |
| rawAvailable | boolean | 原始平台标识是否可用 |
| rawId | string | 原始平台标识,仅 includeRawId=true 时返回 |
| resetHint | string | 标识可能重置的边界说明 |
| reason | string | 中文诊断说明 |
getDeviceIdSync(options)
说明 同步获取设备标识。
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | DeviceIdOptions | 否 | 获取设备标识的参数对象 | { strategy: 'privacy' } |
strategy / includeRawId |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| result | DeviceIdResult | 结构化设备标识结果 |
getAppInstallId(options)
说明 异步读取插件维护的应用安装 ID,不经过 ANDROID_ID、IDFV 或广告标识来源优先级。
支持平台 Android / iOS / HarmonyOS / Web / 微信小程序 / 支付宝小程序
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | AppInstallIdOptions | 否 | 异步回调参数 | {} |
success / fail / complete |
| options.success | function | 否 | 成功回调,返回 DeviceIdResult |
无 | 无 |
| options.fail | function | 否 | 原生上下文不可用时的失败回调 | 无 | 无 |
| options.complete | function | 否 | 完成回调 | 无 | 无 |
返回值
异步方法无直接返回值,结果通过回调返回。成功结果的 source 固定为 appInstallId,scope 固定为 app。
getAppInstallIdSync()
说明 同步读取插件维护的应用安装 ID。
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| 无 | 无 | 否 | 无参数 | 无 | 无 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| result | DeviceIdResult | id 为当前安装 ID,source=appInstallId、scope=app |
resetAppInstallId()
说明 重置插件本地安装 ID,不影响 AndroidId、IDFV、ODID、AAID、OAID、IDFA 等平台标识。
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| 无 | 无 | 否 | 无参数 | 无 | 无 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| success | boolean | 是否重置成功 |
| appInstallId | string | 新的本地安装 ID |
| reason | string | 中文说明 |
getDeviceIdCapability()
说明 获取当前平台的设备标识能力矩阵。
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| 无 | 无 | 否 | 无参数 | 无 | 无 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| platform | string | 当前平台 |
| privacy | boolean | 是否支持 privacy 策略 |
| stable | boolean | 是否支持 stable 策略 |
| advertising | boolean | 是否支持 advertising 策略 |
| sources | Array |
可能的标识来源列表 |
| defaultRequiresPermission | boolean | 默认策略是否需要权限 |
| customBaseRecommended | boolean | 是否建议使用自定义基座验证 |
| message | string | 能力说明 |
错误码
| 错误码 | 含义 | 说明 |
|---|---|---|
| 9050001 | current platform unsupported | 当前平台不支持该策略 |
| 9050002 | native context unavailable | App 原生上下文不可用 |
| 9050003 | advertising identifier sdk missing | 广告标识 SDK 或授权能力未接入 |
| 9050004 | local install id storage unavailable | 本地安装 ID 存储不可用 |
支持平台
| 平台 | 是否支持 | 说明 |
|---|---|---|
| Android App | 支持 | 默认使用 Settings.Secure.ANDROID_ID,并用本地安装 ID 兜底 |
| iOS App | 支持 | 默认使用 UIDevice.current.identifierForVendor,并用本地安装 ID 兜底 |
| HarmonyOS App | 支持 | 使用应用沙箱 Preferences 持久化本地安装 ID,预留 ODID / AAID / OAID 策略边界 |
| Web | 降级支持 | 使用本地 storage 安装 ID;存储不可用时返回进程级临时 ID 和 9050004 诊断,不代表 App 原生设备标识 |
| 微信小程序 | 降级支持 | 复用本地安装 ID 降级逻辑;存储不可用时不伪造持久化成功 |
| 支付宝小程序 | 降级支持 | 复用本地安装 ID 降级逻辑;存储不可用时不伪造持久化成功 |
所有已支持平台均可通过 getAppInstallId() 或 getAppInstallIdSync() 绕过平台设备标识优先级,直接读取当前插件本地安装 ID。
三端策略说明
Android
privacy / stable:优先返回 AndroidSettings.Secure.ANDROID_ID。advertising:返回 OAID 能力诊断,不默认集成 OAID SDK。- 不默认读取 IMEI、MEID、MAC、Serial。
iOS
privacy / stable:优先返回UIDevice.current.identifierForVendor。advertising:返回 IDFA / ATT 能力诊断,不默认请求跟踪授权。- 不使用私有 API,不读取 UDID。
HarmonyOS
privacy / stable:返回应用沙箱持久化的本地安装 ID;杀进程或普通重启后保持,卸载应用或清除应用数据后重置。advertising:返回 OAID 能力诊断,需业务按平台权限和 Kit 能力单独接入。- 不伪造系统 ODID、AAID 或 OAID 成功结果。
- 如果 Preferences 上下文或落盘能力不可用,插件会明确返回运行期降级诊断;
resetAppInstallId()不会伪造持久化成功。
HarmonyOS 持久化验收
HarmonyOS 真机需要重新原生联编并安装新包,然后按以下顺序验证:
- 调用
privacy或stable,记录当前 ID。 - 杀进程并重新启动应用,再次调用并确认 ID 不变。
- 调用
resetAppInstallId(),确认返回新的 ID。 - 再次杀进程重启,确认 reset 后的新 ID 保持不变。
静态守卫、LSP、appResource 和生成 ArkTS 抽查只能证明代码与构建链路成立,不能替代真机跨进程持久化验收。
隐私与合规说明
本插件默认不默认读取 IMEI、MEID、MAC、Serial、UDID 等高风险硬件标识。业务如需广告归因,应使用 advertising 策略作为入口,并按 Android、iOS、HarmonyOS 的隐私政策、权限授权和应用市场审核要求单独接入。
- 不默认读取 IMEI。
- 不默认读取 MEID。
- 不默认读取 MAC。
- 不默认读取 Serial。
- 不默认读取 UDID。
自定义基座说明
新增或修改 utssdk/app-android、utssdk/app-ios、utssdk/app-harmony 里的原生 UTS 逻辑后,需要重新运行对应平台原生联编或重新打对应平台自定义基座。仅同步 wgt 或 appResource 不能替换旧基座里已编译的 UTS 原生部分。
uni-app x 示例验证记录
example/uniappx/index.uvue 已对齐 uni-app 示例页,覆盖当前结果、能力矩阵、隐私优先、稳定标识、广告标识检测、重置安装标识和运行日志。
2026-06-25 Android USB 自定义基座复测结果:
privacy:返回ANDROID_ID,permissionStatus=notRequired,supported=true。stable:返回同一ANDROID_ID,用于验证稳定标识策略。advertising:返回supported=false、source=oaid、permissionStatus=sdkMissing、errCode=9050003,符合未默认集成 OAID SDK 的预期。resetAppInstallId():返回success=true,随后自动刷新 privacy 结果;ANDROID_ID不受本地安装 ID 重置影响。- logcat 未发现插件级
FATAL EXCEPTION、ClassCastException、NoClassDefFoundError。
作者系列UTS插件
以下为已在 DCloud 插件市场上架的作者系列 UTS 插件,可按业务场景组合使用。未列出的插件表示当前未确认公开市场页,后续上架后再补充。
| 插件 | 能力方向 | 插件市场 |
|---|---|---|
lizhao-nfc-pro |
NFC 标签读写、NDEF、IsoDep 与诊断 | 查看插件 |
lizhao-float-window |
悬浮窗、画中画、权限与诊断 | 查看插件 |
lizhao-device-id |
设备标识、隐私策略与诊断 | 查看插件 |
lizhao-scan-pro |
原生扫码、连续扫码、相册识别 | 查看插件 |
lizhao-choose-file |
原生文件选择、上传、进度与取消 | 查看插件 |
lizhao-bg-audio |
背景音频播放、队列、倍速与事件 | 查看插件 |
lizhao-smart-tts |
系统 TTS、云端合成、听书方案 | 查看插件 |
lizhao-share-plus |
系统分享、远程文件下载后分享 | 查看插件 |
lizhao-sqlite-pro |
原生 SQLite、迁移、备份与诊断 | 查看插件 |
lizhao-icon-pro |
SVG 图标组件、多主题与缓存 | 查看插件 |
lizhao-cast-screen |
DLNA 投屏、AirPlay 路由入口 | 查看插件 |
lizhao-call-kit |
电话、短信、通讯录原生能力 | 查看插件 |
lizhao-app-keepalive |
应用保活、唤醒、自愈与报告 | 查看插件 |
lizhao-doc-corrector |
文档扫描、矫正、增强与识别 | 查看插件 |
lizhao-emu-detect |
模拟器环境检测、风险评分与证据 | 查看插件 |
lizhao-gallery-pro |
相册媒体分页、筛选、缩略图与导出 | 查看插件 |
lizhao-video-thumb |
视频封面、批量取帧与 Base64 返回 | 查看插件 |
lizhao-ble |
BLE 扫描、连接、读写、通知与自动重连 | 查看插件 |
lizhao-sse-pro |
SSE、Line、JSONL 与 Raw 流式请求 | 查看插件 |

收藏人数:
购买源码授权版(
试用
赞赏(0)
下载 6485
赞赏 5
下载 12474318
赞赏 1936
赞赏
京公网安备:11010802035340号