更新记录

1.0.6(2026-09-15)

  • 修复 Android 运行编译时提示设备标识能力类型不存在、导致项目无法正常编译的问题。
  • 整理接入文档,按使用场景分模块展示示例,为参数、返回结果和失败处理补充注释,并将 API、错误码与常见问题集中到文档下方。
  • 升级后无需修改项目配置或调用代码,已有安装 ID 不会主动重置;需要重新进行 Android 原生联编,或重新制作并安装 Android 自定义基座。

1.0.5(2026-09-14)

  • 新增 getPersistentInstallId()getPersistentInstallIdSync():Android 使用 ANDROID_ID,iOS 使用 Keychain UUID,HarmonyOS API 12+ 使用 Asset Store 持久 UUID。
  • 新增 stabilityLevelmaySurviveReinstallresettableByPluginsourceCapabilities,可区分安装级、平台级、尽力跨卸载以及仅诊断来源。
  • Web 和小程序会明确返回不支持,不再以 storage 安装 ID 冒充跨卸载标识;OAID、IDFA、ODID、AAID 仍只提供能力诊断。
  • 现有 getDeviceId*getAppInstallId* 和命名空间 API 无需修改调用,原有安装 ID 数据不会主动迁移或重置。
  • Android/iOS/HarmonyOS 均涉及原生实现或配置变化,升级后需要重新制作并安装对应平台自定义基座或 HarmonyOS HAP。

1.0.3(2026-07-28)

  • 新增 getAppInstallId()getAppInstallIdSync(),可直接读取插件维护的应用安装 ID,不再依赖 ANDROID_ID / IDFV 的来源优先级。
  • Android、iOS、HarmonyOS、Web、微信小程序和支付宝小程序统一返回 source=appInstallIdscope=app 的结构化结果。
  • Web 与小程序存储不可用时复用进程级临时 ID,并返回 9050004 诊断;重置未持久化时明确返回失败,不伪造成功。
  • uni-app 与 uni-app x 示例新增“读取安装标识”,重置后直接展示新安装 ID,形成读取、重置、再次读取的完整验收链路。
  • 保持既有 privacy / stable / advertising 行为不变,不新增权限、三方 SDK、Manifest 或广告标识采集。
查看更多

平台兼容性

uni-app(4.84)

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

uni-app x(4.84)

Chrome Safari Android iOS 鸿蒙 微信小程序

lizhao-device-id

设备唯一标识 UTS插件,为 uni-app / uni-app x 提供设备标识、应用安装 ID、按业务隔离的安装 ID,以及尽力跨卸载保留的标识。返回结果会同时说明 ID 来源、可用状态和可能变化的条件。

功能特色

能力 可以用来做什么
读取设备标识 获取当前平台可用的标识,辅助设备识别、售后诊断
读取安装级 ID 在同一次安装内关联匿名偏好、草稿和本地缓存
按业务隔离 ID 为不同租户、账号或业务模块保存互不影响的 ID
尽力跨卸载识别 在平台允许的条件下辅助识别重新安装的应用
主动重置安装 ID 更新默认安装 ID,或只更新某个业务的 ID
查询能力与诊断 查看真实可用来源,区分“不支持”和“仅提供诊断”

适用场景

  • 匿名使用:用户尚未登录时,关联本次安装的偏好和草稿。
  • 多业务应用:一个 App 中的不同业务分别使用独立安装 ID。
  • 重复安装识别:读取尽力跨卸载标识,作为业务判断的辅助信息。
  • 接入排查:查看 ID 来源、存储状态和中文诊断,判断本次结果是否可用。

快速开始:读取第一个标识

在插件市场选择“使用 HBuilderX 导入插件”,导入到项目后即可从插件根目录引用,无需调用初始化方法。

下面是一个可放入 uni-app x Vue 3 页面中的完整示例。uni-app Vue 3 使用 .vue 页面时,将 lang="uts" 改成 lang="ts";uni-app Vue 2 的完整写法见下方“完整示例”。

<template>
  <view>
    <button @click="readId">读取设备标识</button>
    <text>{{ message }}</text>
  </view>
</template>

<script setup lang="uts">
import { ref } from 'vue'
import { getDeviceIdSync } from '@/uni_modules/lizhao-device-id'

// 页面展示内容;按钮点击后更新为本次读取结果。
const message = ref('点击按钮读取')

function readId() {
  // 不传参数使用默认 privacy 策略,优先读取当前平台可用来源。
  const result = getDeviceIdSync()
  if (!result.supported || result.id == '') {
    // 不可用时展示原因,不把空字符串保存为业务标识。
    message.value = '读取失败:' + result.reason
    return
  }
  // ID 应与来源一起理解;不同平台取得的 ID 类型可能不同。
  message.value = '标识:' + result.id + ',来源:' + result.source
}
</script>

核心参数与结果判断

常用项 默认值 / 示例 怎样使用
strategy privacy 默认策略;stable 使用相同来源链;advertising 当前仅作诊断
includeRawId false 是否额外返回 rawId;不会对 id 自动加密、哈希或脱敏
namespace tenant-demo 仅命名空间 API 必填,用稳定的业务名称隔离 ID
supportedid 返回字段 先确认 supported=trueid 非空,再使用结果
stabilityLevel 返回字段 process 仅当前进程有效;其他值见下方返回字段
persistent 部分 API 返回 命名空间与持久标识结果才有此字段,普通 DeviceIdResult 没有
reasonerrCode 返回字段 结果不可用或存储降级时,用于说明原因

先选择适合的 API

需求 推荐调用 能否主动重置
当前平台的设备标识 getDeviceIdSync() 根据 resettableByPlugin 判断
只需要本次安装的独立 ID getAppInstallIdSync() 可以
不同业务各用一个安装 ID getNamespacedInstallIdSync(namespace) 可以,各自独立
希望卸载重装后尽量相同 getPersistentInstallIdSync() 插件不提供重置
查询来源是否实现 getDeviceIdCapability() 不涉及重置

按业务模块使用

每个模块的代码均可独立选用。将 import 放到页面脚本顶部,将读取逻辑放到按钮方法、业务函数或合适的页面生命周期中;不要在高频渲染过程中反复读取。

模块一:读取设备标识并处理回调

适合希望在回调中更新页面或接入业务逻辑的场景。同步调用使用快速开始中的 getDeviceIdSync()

import { getDeviceId } from '@/uni_modules/lizhao-device-id'

getDeviceId({
  strategy: 'privacy', // 默认策略,具体来源由当前平台决定。
  includeRawId: false, // 不额外返回 rawId;id 仍然是本次标识值。
  success(res) {
    // success 可能收到结构化诊断,不代表一定取得了可用 ID。
    if (!res.supported || res.id == '') {
      console.log('本次标识不可用', res.errCode, res.reason)
      return
    }
    console.log('设备标识', res.id, '来源', res.source)
    // 如需保存,应同时记录 source、scope,便于解释来源和范围。
    console.log('作用域', res.scope, '稳定级别', res.stabilityLevel)
  },
  fail(err) {
    // 原生上下文不可用等硬失败进入此回调。
    console.log('读取失败', err.errCode, err.errMsg)
  },
  complete() {
    // 成功或失败后都会执行,可在这里结束页面加载状态。
    console.log('设备标识读取结束')
  }
})

模块二:读取本次安装的 ID

适合匿名偏好、草稿归属等安装级用途。此 API 直接读取插件维护的安装 ID,不会优先选择 ANDROID_ID 或 IDFV。

import { getAppInstallIdSync } from '@/uni_modules/lizhao-device-id'

// 多次读取同一安装 ID;主动重置或安装数据丢失后可能变化。
const result = getAppInstallIdSync()
if (!result.supported || result.id == '') {
  console.log('安装 ID 不可用', result.reason)
} else if (result.errCode == 9050004) {
  // 存储不可用时可能返回临时 ID,不能据此认定下次启动仍相同。
  console.log('当前仅使用临时安装 ID', result.id, result.reason)
} else {
  console.log('安装 ID', result.id, '来源', result.source)
}

如需回调形式,使用 getAppInstallId(options),提供 success / fail / complete 即可;结果仍应检查 supportediderrCode

模块三:为不同业务分配独立 ID

“命名空间”就是用于隔离 ID 的业务名称。同一个名称重复读取同一个 ID,不同名称各自保存。

import { getNamespacedInstallIdSync } from '@/uni_modules/lizhao-device-id'

// 使用固定业务名称,不要每次用时间戳或随机数创建新的命名空间。
const namespace = 'tenant-demo'
const result = getNamespacedInstallIdSync(namespace)
if (!result.supported || result.id == '') {
  console.log('业务安装 ID 不可用', result.errCode, result.reason)
} else if (!result.persistent) {
  // 有 ID 但未确认持久化,仅适合当前进程内临时使用。
  console.log('业务安装 ID 尚未持久化', result.id, result.reason)
} else {
  console.log('业务名称', result.namespace, '安装 ID', result.id)
}

需要回调时,使用下面的形式:

import { getNamespacedInstallId } from '@/uni_modules/lizhao-device-id'

getNamespacedInstallId({
  namespace: 'tenant-demo', // 必填,决定读取哪个业务的安装 ID。
  success(res) {
    // 存储降级也会进入 success,持久使用前需检查 persistent。
    if (!res.supported || res.id == '' || !res.persistent) {
      console.log('业务安装 ID 暂不可持久使用', res.errCode, res.reason)
      return
    }
    console.log('业务安装 ID', res.namespace, res.id)
  },
  fail(err) {
    // 名称非法或原生上下文不可用时进入这里。
    console.log('读取业务安装 ID 失败', err.errCode, err.errMsg)
  },
  complete() {
    // 可在这里结束加载状态。
    console.log('业务安装 ID 读取结束')
  }
})

命名空间长度为 1 至 64 位,只允许 ASCII 字母、数字、._-。插件不自动去除空格或转换大小写,tenant-demoTenant-demo 是两个名称;非法名称返回 9050005

模块四:读取尽力跨卸载保留的标识

适合辅助判断重复安装。它表示在同设备、同应用身份等条件下可能保留,不代表永久不变。

import { getPersistentInstallIdSync } from '@/uni_modules/lizhao-device-id'

// Android、iOS、HarmonyOS 使用各自的持久来源,具体边界见下方平台说明。
const result = getPersistentInstallIdSync()
if (!result.supported || result.id == '' || !result.persistent) {
  // 不支持或持久来源不可用时,不用普通安装 ID 冒充跨卸载标识。
  console.log('持久标识不可用', result.errCode, result.reason)
} else {
  console.log('持久标识', result.id, '来源', result.source)
  // 这些字段解释当前能力与变化条件,不是永久稳定承诺。
  console.log('可能跨卸载保留', result.maySurviveReinstall)
  console.log('可能变化的条件', result.resetHint)
}

回调形式如下,只有取得非空的可用持久标识才进入 success

import { getPersistentInstallId } from '@/uni_modules/lizhao-device-id'

getPersistentInstallId({
  success(res) {
    // 业务保存时同时记录来源,方便后续区分平台和标识类型。
    console.log('持久标识', res.id, '来源', res.source)
  },
  fail(err) {
    // Web/小程序不支持,或系统持久来源不可用时进入此回调。
    console.log('持久标识读取失败', err.errCode, err.errMsg)
  },
  complete() {
    // 成功或失败后均可在这里结束加载状态。
    console.log('持久标识读取结束')
  }
})

模块五:重置默认安装 ID 或单个业务 ID

重置会改变后续读取结果,适合由用户主动触发的“重置匿名身份”等操作。下面只声明操作函数,接入时由确认后的按钮调用,不会在页面加载时自动重置。

import { resetAppInstallId, resetNamespacedInstallId } from '@/uni_modules/lizhao-device-id'

// 用户确认后调用:仅更新默认安装 ID,不修改系统设备标识。
function resetDefaultInstallId() {
  const result = resetAppInstallId()
  if (!result.success) {
    console.log('默认安装 ID 重置失败', result.reason)
    return
  }
  console.log('新的默认安装 ID', result.appInstallId)
}

// 用户确认后调用:仅更新 tenant-demo,不影响其他名称或默认安装 ID。
function resetTenantInstallId() {
  const result = resetNamespacedInstallId('tenant-demo')
  if (!result.success || !result.persistent) {
    console.log('业务安装 ID 重置失败', result.errCode, result.reason)
    return
  }
  console.log('新的业务安装 ID', result.namespace, result.appInstallId)
}

重置成功后,请使用对应的 getAppInstallIdSync()getNamespacedInstallIdSync(namespace) 再次读取。getDeviceIdSync() 可能仍返回系统标识,因此不一定随安装 ID 重置而变化。

模块六:查询真实能力与广告标识诊断

先查询能力,再判断业务需要的来源是否可用。能力表描述插件已实现的来源,不保证本次设备读取一定成功,最终以读取结果为准。

import { getDeviceIdCapability, getDeviceIdSync } from '@/uni_modules/lizhao-device-id'

// sources 只列真实实现;sourceCapabilities 还包含仅诊断的来源。
const capability = getDeviceIdCapability()
console.log('当前平台', capability.platform, capability.message)
capability.sourceCapabilities.forEach((item) => {
  // available:已实现;diagnosticOnly:仅诊断;unsupported:不支持。
  console.log('标识来源', item.source, '实现状态', item.status)
  console.log('权限或 SDK 状态', item.permissionStatus)
})

// 当前 advertising 策略不提供可用广告 ID;用于展示诊断信息。
const result = getDeviceIdSync({ strategy: 'advertising' })
if (!result.supported) {
  console.log('广告标识不可用', result.errCode, result.reason)
}

完整示例

项目 示例文件 内容
uni-app deviceId.vue 读取、能力查询、安装 ID、命名空间、持久标识和重置
uni-app x index.uvue 同类功能的 UTS 页面写法与结果展示

API 速查

方法列表

Sync 方法直接返回结果;回调形式的方法返回 void,通过回调取结果,不按 Promise 使用。同步方法不要传入回调字段,回调不会执行。

API 参数 返回值 / 回调结果
getDeviceId(options) 可选:策略、原始值开关、回调 DeviceIdResult
getDeviceIdSync(options) 可选:策略、原始值开关 DeviceIdResult
getAppInstallId(options) 可选:回调 DeviceIdResult
getAppInstallIdSync() DeviceIdResult
getNamespacedInstallId(options) 必填:命名空间,可选:回调 NamespacedInstallIdResult
getNamespacedInstallIdSync(namespace) 必填:命名空间字符串 NamespacedInstallIdResult
getPersistentInstallId(options) 可选:回调 PersistentInstallIdResult
getPersistentInstallIdSync() PersistentInstallIdResult
resetAppInstallId() DeviceIdResetResult
resetNamespacedInstallId(namespace) 必填:命名空间字符串 NamespacedInstallIdResetResult
getDeviceIdCapability() DeviceIdCapability

参数与回调

参数 类型 必填 说明 默认值 可选参数
strategy string getDeviceId* 使用的策略 privacy privacy / stable / advertising
includeRawId boolean getDeviceId* 使用,是否返回 rawId false true / false
namespace string 命名空间 API 必填 1 至 64 位业务名称 ASCII 字母、数字、._-
success function 回调形式 API 的结果回调,具体语义见下表 对应结果对象
fail function 硬失败或持久来源不可用的错误回调 DeviceIdFail
complete function 成功或失败后执行一次 结果或错误对象
回调 API success 的含义 fail 的含义
getDeviceId 返回结构化结果,包括广告标识不可用诊断 原生上下文不可用等硬失败
getAppInstallId 返回安装 ID,可能包含存储降级诊断 原生上下文不可用等硬失败
getNamespacedInstallId 返回命名空间结果,存储降级时 persistent=false 名称非法或原生上下文不可用
getPersistentInstallId 取得非空且可用的持久标识 不支持、上下文或持久来源不可用

策略区别

策略 实际行为
privacy Android 优先 ANDROID_ID,iOS 优先 IDFV;不可用时尝试安装 ID;HarmonyOS、Web、小程序使用安装级来源
stable 当前与 privacy 使用相同来源链,不增加跨卸载保证
advertising 当前只返回能力诊断,supported=false;不提供实际 OAID 或 IDFA 读取

读取结果字段

字段 适用结果 说明
supportedid 全部读取结果 能力是否可用、取得的标识字符串
platform 全部读取结果 实现返回的平台;微信/支付宝复用 Web 实现,当前返回 web
source 全部读取结果 androidId / idfv / appInstallId / iosKeychain / harmonyAssetStore / oaid / idfa / unsupported
scope 全部读取结果 app / vendor / developer / platform / advertising / unknown,描述来源的作用范围
stabilityLevel 全部读取结果 process / install / vendor / reinstallBestEffort / advertising / unknown,分别为进程级、安装级、厂商范围、尽力跨卸载、广告标识、未知
maySurviveReinstall 全部读取结果 当前来源是否可能跨卸载保留;不能单独作为成功或永久稳定判断
resettableByPlugin 全部读取结果 插件是否提供重置能力;持久标识固定为 false
requiresPermissionpermissionStatus 全部读取结果 是否需要额外权限,及 notRequired / granted / denied / notDetermined / sdkMissing / unsupported 状态
resetHintreason 全部读取结果 可能变化的条件、本次中文诊断
errCodeerrMsg 全部读取结果 可选错误信息;有 ID 时也可能存在存储降级错误
strategy 设备、安装、命名空间结果 使用的策略;直接读取安装 ID 时为 privacy
isResettable 设备、安装、命名空间结果 兼容字段,说明值可能因插件、系统或平台变化;不等于插件能重置
rawAvailablerawId DeviceIdResult 原始值可用状态和原始值;默认 rawId='',仅明确请求时返回
persistent 命名空间、持久标识结果 是否从已确认持久来源读取,或完成写后回读
namespace 命名空间结果 本次业务名称

getDeviceId* 的 Android scope='app' 保留既有兼容行为;getPersistentInstallId*developer 表示 Android 签名身份、用户和设备共同限定,不是平台全局标识。

重置与能力查询结果

结果 字段 说明
DeviceIdResetResult success / appInstallId / reason 是否成功、新安装 ID、中文说明
NamespacedInstallIdResetResult 上述字段,以及 namespace / persistent / errCode / errMsg 指定业务的重置状态;失败时不要将临时值当作已落盘的新 ID
DeviceIdCapability platform / privacy / stable / advertising 当前平台及对应策略是否已提供
DeviceIdCapability sources 已实现真实读取的来源数组
DeviceIdCapability sourceCapabilities 来源明细数组,每项含 source / status / permissionStatus
DeviceIdCapability defaultRequiresPermission / customBaseRecommended / message 默认策略权限需求、基座建议、中文说明

sourceCapabilities 每项为 DeviceIdSourceCapabilitystatusavailable / diagnosticOnly / unsupportedavailable 表示插件已实现;权限、设备条件和实际读取仍需检查具体调用结果。

错误码

错误回调中的 DeviceIdFail 包含 errSubjecterrCodeerrMsg,其中 errSubjectlizhao-device-id。同步读取使用结果中的 errCode / errMsg / reason 判断。

错误码 含义 说明
9050001 当前平台不支持 改用该平台支持的 API;Web/小程序不支持跨卸载标识
9050002 原生上下文不可用 确认在 App 正常页面环境调用,并重新检查基座是否匹配
9050003 广告标识能力未接入 当前只提供诊断;仅申请权限不会自动获得 OAID/IDFA
9050004 安装 ID 存储不可用 若返回临时 ID,仅用于当前进程;恢复存储后重新读取
9050005 命名空间非法 检查长度和允许字符,不要包含空格或中文
9050006 持久来源不可用 检查 reason、系统条件与权限,避免当成跨卸载识别成功

支持平台与标识边界

App 端支持 uni-app 与 uni-app x;降级能力以各框架支持的目标平台为前提,uni-app x 不因本插件而增加支付宝小程序支持。

平台 是否支持 说明
Android App 支持 设备标识使用 ANDROID_ID 并支持安装 ID 兜底;持久标识直接使用 ANDROID_ID,不以安装 ID 兜底
iOS App 支持 设备标识使用 IDFV 并支持安装 ID 兜底;持久标识使用 Keychain UUID
HarmonyOS App 支持 普通安装 ID 使用 Preferences;API 12+ 的持久标识使用 Asset Store,需要声明 ohos.permission.STORE_PERSISTENT_DATA
Web 安装级支持 使用 storage 保存安装 ID;清理站点数据或更换浏览器后可能变化
微信小程序 安装级支持 使用 storage 保存安装 ID;不支持尽力跨卸载标识
支付宝小程序 uni-app 安装级支持 使用 storage 保存安装 ID;不支持尽力跨卸载标识
持久来源 可能变化的条件
Android androidId Android 8+ 通常受签名、用户、设备影响;恢复出厂或应用身份变化后可能改变
iOS iosKeychain 相同应用身份和 Keychain 访问范围下尽力保留;抹除设备、Team ID、Bundle ID 或访问范围变化可能失效
HarmonyOS harmonyAssetStore 同设备、同应用身份下尽力保留;恢复出厂、重装系统、应用身份或权限变化可能失效

OAID、IDFA、HarmonyOS ODID/AAID 当前仅作诊断,不能把能力名称出现理解为已经可以读取。Android/iOS 默认读取不需要新增权限。

常见问题

第一次接入应该选择哪一种 ID?

只关联本次安装的数据,使用 getAppInstallIdSync();按业务隔离使用命名空间 API;需要平台设备信号使用 getDeviceIdSync();需要辅助识别重新安装时再选持久标识 API。

卸载重装后一定不变吗?

不保证。安装 ID 依赖应用数据;持久标识也受系统、应用身份和权限影响。服务端账号、会员、授权和付费权益应使用服务端业务 ID 及登录或绑定关系恢复,不应仅依赖客户端 ID。

success 执行了,为什么 supported 还是 false?

普通读取接口会通过 success 返回结构化诊断,例如广告标识未接入。请继续判断 supportedid;命名空间结果还应检查 persistent。持久标识接口取得可用非空标识才会进入 success

includeRawId: false 会隐藏或加密 ID 吗?

只让 rawId 为空,id 仍是本次取得的标识,可能就是平台原始值。插件不自动哈希或脱敏,请按业务需要决定保存与展示范围。

为什么重置成功后,设备标识看起来没变?

重置只作用于安装 ID;getDeviceIdSync() 可能优先读取 ANDROID_ID 或 IDFV。请用对应安装 ID API 检查重置结果,持久标识没有插件重置 API。

命名空间 ID 在退出账号时会自动变化吗?

不会。插件不会监听账号切换。相同名称继续返回已保存的 ID,业务需要变化时主动重置指定命名空间,或使用另一个固定名称。

杀进程或重启后,安装 ID 能继续使用吗?

持久化存储可用时可继续读取;HarmonyOS 安装 ID 使用应用 Preferences。若结果提示 9050004stabilityLevel='process'persistent=false,则不能认定下次启动还相同。清理数据、卸载及系统备份恢复也可能影响结果。

stableprivacy 更稳定吗?

当前两者使用相同来源链,stable 只表达调用意图,不增加保证。persistent=true 也只是说明持久读取或保存状态,不代表永久有效。

Web 或小程序能得到和 App 一样的设备 ID 吗?

不能。它们使用 storage 安装级标识,不代表原生系统设备身份;持久标识 API 明确返回不支持,不会用 storage 冒充跨卸载能力。

升级后还报旧错误,需要调整调用吗?

本次 Android 编译修复无需调整调用或项目配置。请重新进行 Android 原生联编,或重新制作并安装 Android 自定义基座;仅热更新页面资源不能更新已经编译进基座的插件代码。

注意事项

  • 不默认读取 IMEI,不默认读取 MEID,不默认读取 MAC,不默认读取 Serial,不默认读取 UDID,也不默认集成广告标识 SDK。
  • 升级不会主动迁移或重置默认安装 ID、命名空间 ID;系统备份恢复和应用数据变化仍可能影响实际生命周期。
  • iOS Keychain 和 HarmonyOS Asset Store 的同步读取应低频调用,尽量在业务确有需要时读取。
  • 使用 HarmonyOS 持久数据时,应在应用隐私说明中解释数据保留和删除方式。
  • 本次 Android 修复需要匹配的原生基座;如果还未接入此前的 iOS/HarmonyOS 持久能力,也需使用包含对应原生实现和配置的基座或 HAP。

隐私、权限声明

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

Android/iOS 默认无需新增权限;HarmonyOS 持久标识需要 ohos.permission.STORE_PERSISTENT_DATA;广告标识能力需业务按平台单独申请授权和隐私声明

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

读取 Android ANDROID_ID、iOS IDFV、插件安装 UUID;按需在 iOS Keychain 或 HarmonyOS Asset Store 保存随机 UUID,用于尽力跨卸载识别;不读取 IMEI、MEID、MAC、Serial、UDID 等高风险硬件标识

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

默认不采集广告标识;advertising 策略仅返回广告标识能力诊断,不默认集成 OAID/IDFA SDK

暂无用户评论。