设备唯一ID获取,支持安卓/iOS/鸿蒙Next(uni-device-id)UTS插件
设备唯一ID获取 支持安卓/iOS/鸿蒙(uni-device-id)UTS插件
介绍
- 获取设备唯一ID、设备唯一标识,支持安卓(AndroidId/OAID/IMEI/MEID/MacAddress/Serial/UUID/设备基础信息),iOS(Identifier/UUID),鸿蒙(AAID/ODID)。
- iOS使用keychain持久存储UUID,应用卸载后UUID不变。
- 鸿蒙使用AssetMap存储UUID,应用卸载后UUID不变。
猛戳这里去插件市场看看
API说明
| 方法名称 | 参数 | 返回参数 | 说明 |
|---|---|---|---|
| getUniqueDeviceId | 无 | string | 安卓调用顺序OAID->AndroidId->MacAddress->Serial->UUID。 iOS上使用UUID,keychain存储。鸿蒙上使用UUID,AssetMap存储 |
| getDeviceId | 无 | string | 安卓返回AndroidId。 iOS返回identifier。鸿蒙返回ODID |
| getOAID | 回调 | 无 | 安卓返回OAID。 鸿蒙返回AAID。iOS不支持 |
| getImeiOrMeid | boolean | string | 仅支持安卓,安卓根据参数true返回IMEI否则MEID,安卓10以下可获取,不包括10,安卓6以上申请用户权限 |
| getMacAddress | 无 | string | 仅支持安卓,安卓11以下可用 |
| getSerial | 无 | string | 仅支持安卓,安卓10以下可用 |
| generateUUID | 无 | string | 无限制 |
插件试用

VUE代码调用示例
<script>import { getDeviceId,getOAID,getDeviceInfo,generateUUID,getImeiOrMeid,getSerial,getMacAddress,getUniqueDeviceId,isHarmonyOS4 } from "@/uni_modules/CZ-DeviceId";export default {data() {return {title:"DeviceId 示例"}},methods:{testGetUniqueDeviceId(){let id = getUniqueDeviceId();this.showToast(id);},testGetDeviceId(){let id = getDeviceId();this.showToast(id);},testGetOAID(){getOAID((value)=> this.showToast(value));},testGetImeiOrMeid(){getImeiOrMeid(true,(value)=> this.showToast(value));getImeiOrMeid(false,(value)=> this.showToast(value));},testGetSerial(){let sn = getSerial();this.showToast(sn);},testGetMacAddress(){let mac = getMacAddress();this.showToast(mac);},testGenerateUUID(){let uuid = generateUUID();this.showToast(uuid);},testGetDeviceInfo(){let json = getDeviceInfo();this.showToast(json);},showToast(msg){if(msg == ''){uni.showToast({icon:'none',title:'未获取到相关信息'})}else {uni.showToast({icon:'none',title: msg})}},}}</script>
设备唯一标识说明:
AndroidId:
- Android ID 是 Android 设备的唯一标识符,用于标识设备。
- 基本设备都能正常获取到,少部分设备无法获取;每个应用获取的AndroidID都不一致;单个应用卸载重装后AndroidID不变。
- 仅支持安卓。
OAID:
- OAID 是 Android 系统提供的用于广告追踪的匿名标识符。
- 仅支持安卓。
IMEI/MEID:
- IMEI/MEID国际移动设备身份码,用于唯一标识 GSM 和 UMTS 移动电话设备。
- 安卓10以前需要权限才能获取到,安卓10以后不支持,不包括安卓10。
MacAddress:
- MacAddress是设备的网络接口卡上的物理地址,也就是用于唯一标识网络设备的地址。
- 安卓11以前可以获取到。安卓11以后不支持,包括安卓11。
Serial:
- Serial是硬件厂商为每个设备分配的一个独特的标识符。
- 安卓10以前获取到,安卓10以后不支持,不包括安卓10。
UUID:
- 随机生成的设备ID。
- 每次获取都会重新生成。
- 支持安卓、iOS、鸿蒙。
Identifier:
- Identifier是由苹果系统生成的唯一标识符,用于标识同一供应商(即同一开发者账户下的应用)在同一设备上运行。
- 仅支持iOS。
AAID:
- 鸿蒙应用匿名标识符,标识运行在移动智能终端设备上的应用实例,只有该应用实例才能访问该标识符,它只存在于应用的安装期,总长度32位。与无法重置的设备级硬件ID相比,AAID具有更好的隐私权属性。
- AAID和已有的任何标识符都不关联,并且每个应用只能访问自己的AAID。
- 同一个设备上,同一个开发者的多个应用,AAID取值不同。
- 同一个设备上,不同开发者的应用,AAID取值不同。
- 不同设备上,同一个开发者的应用,AAID取值不同。
- 不同设备上,不同开发者的应用,AAID取值不同。
- 仅支持鸿蒙。
ODID:
- 开发者匿名设备标识符,它主要用于开放给开发者的设备标识,同一设备上运行的同一个开发者的应用,ODID相同。帮助开发者更好地理解用户在不同应用间的行为,从而提供更个性化的服务和推荐。
- 同一设备上运行的同一个开发者的应用,ODID相同。
- 同一个设备上不同开发者的应用,ODID不同。
- 不同设备上同一个开发者的应用,ODID不同。
- 不同设备上不同开发者的应用,ODID不同。
- 仅支持鸿蒙。
用到的权限
安卓
<!-- 读取手机信息 --><uses-permission android:name="android.permission.READ_PHONE_STATE"/><!-- 读取WIFI信息 --><uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/><uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
iOS
无
鸿蒙
{"name": "ohos.permission.STORE_PERSISTENT_DATA","usedScene": {"abilities": ["EntryAbility"],"when": "always"},}
- 鸿蒙OAID、AAID和ODID分别是什么,如何获取设备的唯一标识?
相关文章:
设备唯一ID获取,支持安卓/iOS/鸿蒙Next(uni-device-id)UTS插件
设备唯一ID获取 支持安卓/iOS/鸿蒙(uni-device-id)UTS插件 介绍 获取设备唯一ID、设备唯一标识,支持安卓(AndroidId/OAID/IMEI/MEID/MacAddress/Serial/UUID/设备基础信息),iOS(Identifier/UUID),鸿蒙&am…...
基于Springboot医院预约挂号小程序系统【附源码】
基于Springboot医院预约挂号小程序系统 效果如下: 小程序主页面 帖子页面 医生账号页面 留言内容页面 管理员主页面 用户管理页面 我的挂号页面 医生管理页面 研究背景 随着信息技术的飞速发展和互联网医疗的兴起,传统的医疗服务模式正面临着深刻的变…...
微信小程序 - 页面跳转(wx.navigateTo、wx.redirectTo、wx.switchTab、wx.reLaunch)
API 跳转 1、wx.navigateTo (1)基本介绍 功能:保留当前页面,跳转到应用内的某个页面,使用该方法跳转后可以通过返回按钮返回到原页面 使用场景:适用于需要保留当前页面状态,后续还需返回的情…...
如何手动设置u-boot的以太网的IP地址、子网掩码、网关信息、TFTP的服务器地址,并进行测试
设置IP地址 运行下面这条命令设置u-boot的以太网的IP地址: setenv ipaddr 192.168.5.9设置子网掩码 运行下面这条命令设置u-boot的以太网的子网掩码: setenv netmask 255.255.255.0设置网关信息 运行下面这条命令设置u-boot的网关信息: …...
小红书运营教程(内容笔记01)
# 小红书笔记引流实战指南:合规涨粉与精准引流策略## 一、引流底层逻辑:平台算法与用户心理### 1.1 小红书流量推荐机制 ```mermaid graph TD A[笔记发布] --> B(机器初审) B --> C{内容质量检测} C -->|通过| D[进入初级流量池200-500曝光] D --> E{互动率达标?…...
tortoiseGit的使用和上传拉取
tortoiseGit的使用和上传拉取 下载TortoiseGit 通过网盘分享的文件:tortoiseGit.zip 链接: https://pan.baidu.com/s/1EOT_UsM9_OysRqXa8gES4A?pwd1234 提取码: 1234 在电脑桌面新建文件夹并进入 右击鼠标 将网址复制上去 用户名和密码是在git注册的用户名和…...
IDEA通过Maven使用JBLJavaToWeb插件创建Web项目
第一步:IDEA下载JBLJavaToWeb插件 File--->Settings--->Plugins--->Marketplace搜索: JBLJavaToWeb 第二步:创建普通Maven工程 第三步: 将普通Maven项目转换为Web项目...
【新手初学】SQL注入之二次注入、中转注入
二次注入 一、概念 二次注入可以理解为,攻击者构造的恶意数据存储在数据库后,恶意数据被读取并进入到SQL查询语句所导致的注入。 二、原理 防御者可能在用户输入恶意数据时对其中的特殊字符进行了转义处理,但在恶意数据插入到数据库时被处…...
【第四节】C++设计模式(创建型模式)-Builder(建造者)模式
目录 引言 一、Builder 模式概述 二、Builder 模式举例 三、Builder 模式的结构 四、Builder 模式的实现 五、Builder 模式的优缺点 六、总结 引言 Builder 模式是一种创建型设计模式,旨在将复杂对象的构建过程与其表示分离。通过一步步构建对象,…...
本地部署AI模型 --- DeepSeek(二)---更新中
目录 FAQ 1.Failed to load the model Exit code: 18446744072635812000 FAQ 1.Failed to load the model Exit code: 18446744072635812000 问题描述: 🥲 Failed to load the model Error loading model. (Exit code: 18446744072635812000). Unkn…...
MariaDB 历史版本下载地址 —— 筑梦之路
MariaDB 官方yum源里面只有目前在维护的版本,而有时候对于老项目来说还是需要老版本的rpm包,国内很多镜像站都是同步的官方仓库,因此下载老版本也不好找,这里主要记录下从哪里可以下载到历史版本的MariaDB rpm包。 1. 官方归档网…...
Qt中使用QPdfWriter类结合QPainter类绘制并输出PDF文件
一.类的介绍 1.QPdfWriter介绍 Qt中提供了一个直接可以处理PDF的类,这就是QPdfWriter类。 (1)PDF文件生成 支持创建新的PDF文件或覆盖已有文件,通过构造函数直接绑定文件路径或QFile对象; 默认生成矢量图形PDF&#…...
使用 Promptic 进行对话管理需要具备python技术中的那些编程能力?
使用 Promptic 进行对话管理时,需要掌握一些基础的编程知识和技能,以下是详细说明: 1. Python 编程基础 Promptic 是一个基于 Python 的开发框架,因此需要具备一定的 Python 编程能力,包括: 函数定义与使用:了解如何定义函数、使用参数和返回值。类型注解:熟悉 Python…...
使用 DeepSeek 生成流程图、甘特图与思维导图:结合 Typora 和 XMind 的高效工作流
在现代工作与学习中,可视化工具如流程图、甘特图和思维导图能够极大地提升信息整理与表达的效率。本文将详细介绍如何使用 DeepSeek 生成 Mermaid 文本,结合 Typora 快速生成流程图和甘特图,并通过 Markdown 格式生成思维导图,最终…...
遗传算法初探
组成要素 编码 分为二进制编码、实数编码和顺序编码 初始种群的产生 分为随机方法、基于反向学习优化的种群产生。 基于反向学习优化的种群其思想是先随机生成一个种群P(N),然后按照反向学习方法生成新的种群OP(N),合并两个种群,得到一个新的种群S(N…...
Oracle 连接报错:“ORA-12541:TNS:no listener ”,服务组件中找不到监听服务
一、 报错: navicat连接数据库报错:ORA-12541:TNS:no listener 二、排查问题 三、 解决问题 删除Oracle安装目录下选中的配置:listener.ora 及 listener*.bak相关的 cmd,用管理员打开 执行:netca 命…...
一文详解U盘启动UEFI/Legacy方式以及GPT/MBR关系
对于装系统的老手而说一直想研究一下装系统的原理,以及面对一些问题时的解决思路,故对以前的方法进行原理上的解释,主要想理解其底层原理。 引导模式 MBR分区可以同时支持UEFI和Legacy引导,我们可以看一下微pe制作的启动盘&#…...
计算机毕设-基于springboot的汽车配件销售管理系统的设计与实现(附源码+lw+ppt+开题报告)
博主介绍:✌多个项目实战经验、多个大型网购商城开发经验、在某机构指导学员上千名、专注于本行业领域✌ 技术范围:Java实战项目、Python实战项目、微信小程序/安卓实战项目、爬虫大数据实战项目、Nodejs实战项目、PHP实战项目、.NET实战项目、Golang实战…...
嵌入式八股文(五)硬件电路篇
一、名词概念 1. 整流和逆变 (1)整流:整流是将交流电(AC)转变为直流电(DC)。常见的整流电路包括单向整流(二极管)、桥式整流等。 半波整流:只使用交流电的正…...
C语言番外篇(3)------------>break、continue
看到我的封面图的时候,部分读者可能认为这和编程有什么关系呢? 实际上这个三个人指的是本篇文章有三个部分组成。 在之前的博客中我们提及到了while循环和for循环,在这里面我们学习了它们的基本语法。今天我们要提及的是关于while循环和for…...
Mac下Python版本管理,适用于pyenv不起作用的情况
前言 声明:之前也在网上看到过可以使用pyenv来管理python版本,但由于作者的python安装路径实在是繁杂不堪,因此安装完成pyenv体验下来没有任何用处,但偶然发现vscode似乎可以看到各个python版本,因此写下这篇博客记录…...
网络安全知识--网络、网络安全产品及密码产品概述
🍅 点击文末小卡片 ,免费获取网络安全全套资料,资料在手,涨薪更快 网络结构 网络设备:交换机、路由器、负载均衡 安全设备: 通信网络安全类:通信安全、网络监测与控制 区域边界安全类:隔离类…...
WiFi相关功能使用教程(wpa_supplicant及wpa_cli)
WiFi相关功能使用教程(wpa_supplicant及wpa_cli) 在之前的博客文中,我们已经成功交叉编译了wpa_supplicant和wpa_cli相关文件。 此篇文章中我们将介绍如何使用和配置WiFi模块。 先将生成的可执行文件拷贝到设备里 采用TFTP的方式拷贝到设备中并全都加上可执行权限…...
CentOS7 离线安装 Postgresql 指南
一、背景 服务器通常都是离线内网环境,想要通过联网方式一键下载安装 Postgresql 不太现实,本文将介绍如何在 CentOS7 离线安装 Postgresql,以及遇到困难如何解决。 二、安装包下载 先在本地下载好 rpm 包,再通过 ftp 上传到服…...
详解 为什么 tcp 会出现 粘包 拆包 问题
TCP 会出现 粘包 和 拆包 问题,主要是因为 TCP 是 面向字节流 的协议,它不关心应用层发送的数据是否有边界,也不会自动分割或合并数据包。由于 TCP 的流控制和传输机制,数据可能在传输过程中被拆分成多个小的 TCP 包,或…...
C/C++后端开发面经
字节跳动 客户端开发 实习 一面(50min) 自我介绍是否愿意转语言,是否只愿意搞后端选一个项目来详细谈谈HTTP和HTTPS有什么区别?谈一下HTTPS加密的具体过程: 非对称加密 对称加密 证书认证的方式 非对称加密是为了保证对称密钥的安全性。 对称…...
HTML之JavaScript DOM编程获取元素的方式
HTML之JavaScript DOM编程获取元素的方式 1.获得document DOM树window.document(是window的属性)2.从document中获取要操作的元素1.直接获取var aaa document.getElementById("username") // 根据元素的id值获取页面上的唯一一个元素,有同名的则返回找到的第一个var…...
路由器的WAN口和LAN口有什么区别?
今时今日,移动终端盛行的时代,WIFI可以说是家家户户都有使用到的网络接入方式。那么路由器当然也就是家家户户都不可或缺的设备了。而路由器上的两个实现网络连接的基础接口 ——WAN 口和 LAN 口,到底有什么区别?它们的功能和作用…...
人工智能(AI):科技新纪元的领航者
摘要 人工智能(AI)作为当今科技领域最具变革性的力量之一,正以惊人的速度重塑着我们的世界。本文旨在全面且专业地介绍人工智能,涵盖其定义、发展历程、关键技术、应用领域、面临的挑战以及未来展望等方面,以期为读者…...
CSS通过webkit-scrollbar设置滚动条样式
查看::-webkit-scrollbar-*各项关系 以下图为例,可以分别定义滚动条背景、滚动轨道、滚动滑块的样式。 需要先给外部容器设置高度,再设置overflow: auto,最后设置三个webkit属性。 <!DOCTYPE html> <html lang"en">…...
