更新记录
1.1.1(2025-08-23)
优化版本信息
1.1.0(2025-08-23)
1.1.0(2025-08-23)
iOS新增IDFA广告标识获取,需用户授权
鸿蒙新增OAID广告标识获取,需用户授权
1.0.1(2025-06-10)
优化iOS唯一ID获取逻辑
查看更多
平台兼容性
uni-app
Vue2 |
Vue3 |
Chrome |
Safari |
app-vue |
app-nvue |
Android |
iOS |
鸿蒙 |
√ |
√ |
- |
- |
- |
- |
4.4 |
12 |
√ |
微信小程序 |
支付宝小程序 |
抖音小程序 |
百度小程序 |
快手小程序 |
京东小程序 |
鸿蒙元服务 |
QQ小程序 |
飞书小程序 |
快应用-华为 |
快应用-联盟 |
× |
× |
× |
× |
× |
× |
- |
× |
× |
× |
× |
uni-app x
Chrome |
Safari |
Android |
iOS |
鸿蒙 |
微信小程序 |
- |
- |
5.0 |
12 |
√ |
× |
设备唯一ID获取 支持安卓/iOS/鸿蒙(uni-device-id)UTS插件
介绍
- 获取设备唯一ID、设备唯一标识,支持安卓(AndroidId/OAID/IMEI/MEID/MacAddress/Serial/UUID/设备基础信息),iOS(IDFA/IDFV/UUID),鸿蒙(OAID/ODID/UUID)。
- iOS使用keychain持久存储UUID,应用卸载后UUID不变。
- 鸿蒙使用AssetMap存储UUID,应用卸载后UUID不变。
API说明
方法名称 |
参数 |
返回参数 |
说明 |
getUniqueDeviceId |
无 |
string |
安卓调用顺序OAID->AndroidId->MacAddress->Serial->UUID。 iOS上使用UUID,keychain存储。鸿蒙上使用UUID,AssetMap存储 |
getDeviceId |
无 |
string |
安卓返回AndroidId。 iOS返回IDFV。鸿蒙返回ODID |
getOAID |
回调 |
无 |
安卓返回OAID。 鸿蒙返回OAID需授权。iOS返回IDFA iOS14及以上可用需授权 |
getImeiOrMeid |
boolean |
string |
仅支持安卓,安卓根据参数true返回IMEI否则MEID,安卓10以下可获取,不包括10,安卓6以上申请用户权限 |
getMacAddress |
无 |
string |
仅支持安卓,安卓11以下可用 |
getSerial |
无 |
string |
仅支持安卓,安卓10以下可用 |
generateUUID |
无 |
string |
无限制 |
插件试用
APK下载
VUE代码调用示例
<template>
<view>
<page-head :title="title"></page-head>
<scroll-view>
<view>
<view class="uni-padding-wrap uni-common-mt">
<button @tap="testGetUniqueDeviceId">获取设备唯一标识</button>
</view>
<view class="uni-padding-wrap uni-common-mt">
<button @tap="testGetDeviceId">获取 DeviceId</button>
</view>
<view class="uni-padding-wrap uni-common-mt">
<button @tap="testGetOAID">获取 OAID</button>
</view>
<view class="uni-padding-wrap uni-common-mt">
<button @tap="testGetImeiOrMeid">获取Imei/Meid</button>
</view>
<view class="uni-padding-wrap uni-common-mt">
<button @tap="testGetSerial">获取Serial</button>
</view>
<view class="uni-padding-wrap uni-common-mt">
<button @tap="testGetMacAddress">获取MacAddress</button>
</view>
<view class="uni-padding-wrap uni-common-mt">
<button @tap="testGenerateUUID">随机生成UUID</button>
</view>
<view class="uni-padding-wrap uni-common-mt">
<button @tap="testGetDeviceInfo">获取设备信息</button>
</view>
</view>
</scroll-view>
</view>
</template>
<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(){
///iOS仅14.0及以上版本支持,如果返回空说明未开启允许APP请求跟踪,可在设置-隐私与安全性-跟踪打开后重试
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>
<style>
</style>
设备唯一标识说明:
AndroidId:
- Android ID 是 Android 设备的唯一标识符,用于标识设备。
- 基本设备都能正常获取到,少部分设备无法获取;每个应用获取的AndroidID都不一致;单个应用卸载重装后AndroidID不变。
- 在Android 8.0 中针对Android ID有一个比较大的变化,8.0开始不同签名的App 会产生不同的Android ID,这对于使用AndroidID来追踪设备的用户来说影响比较大。
- 仅支持安卓。
OAID:
- OAID 是系统提供的用于广告追踪的匿名标识符。
- 支持安卓/iOS/鸿蒙。
IMEI/MEID:
- IMEI/MEID国际移动设备身份码,用于唯一标识 GSM 和 UMTS 移动电话设备。
- 安卓10以前需要权限才能获取到,安卓10以后不支持,不包括安卓10。
MacAddress:
- MacAddress是设备的网络接口卡上的物理地址,也就是用于唯一标识网络设备的地址。
- 安卓11以前可以获取到。安卓11以后不支持,包括安卓11。
Serial:
- Serial是硬件厂商为每个设备分配的一个独特的标识符。
- 安卓10以前获取到,安卓10以后不支持,不包括安卓10。
UUID:
- 随机生成的设备ID。
- 每次获取都会重新生成。
- 支持安卓、iOS、鸿蒙。
IDFA:
- 广告标示符,适用于对外:例如广告推广,换量等跨应用的用户追踪等。IDFA 是苹果iOS 6开始新增的广告标识符,英文全称是 Identifier for Advertising ,用于给开发者跟踪广告效果用的,可以简单理解为 iPhone 的设备临时身份证,说是临时身份证是因为它允许用户更换,IDFA 存储在用户 iOS 系统上,同一设备上的应用获取到的 IDFA 是相同的。
- iOS仅14.0及以上版本支持,如果返回空说明未开启允许APP请求跟踪,可在设置-隐私与安全性-跟踪打开后重试
IDFV:
- IDFV是由苹果系统生成的唯一标识符,用于标识同一供应商(即同一开发者账户下的应用)在同一设备上运行。
- 仅支持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
<key>NSUserTrackingUsageDescription</key >
<string></string>
鸿蒙
"requestPermissions": [
{
"name": "ohos.permission.STORE_PERSISTENT_DATA",
"reason": "$string:module_desc",
"usedScene": {
"abilities": [
"EntryAbility"
],
"when": "always"
},
},
{
"name": "ohos.permission.APP_TRACKING_CONSENT",
"reason": "$string:module_desc",
"usedScene": {
"abilities": [
"EntryAbility"
],
"when": "always"
},
}
]