uniapp获取设备的唯一标识uuid

更新日期: 2022-01-10阅读: 5.2k标签: uuid

UUID通用唯一识别码。目前最广泛应用的UUID,是微软公司的全局唯一标识符GUID。其目的是让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。所以UDID是移动端相对最靠谱的设备标识码,不论Android或iOS,即使APP重装,值也不变,除非root手机(普通用户做不到)。

那么在使用uniapp开发移动端应用时候,如何获取设备的uuid呢?


一、HBuilderX2.0.0之前的版本使用

//获取设备的唯一标识号  
console.log("UUID: "+plus.device.uuid);

目前官网不推荐使用该方式了,建议使用5+ api的属性方式获取imei、imsi、uuid信息的代码调整使用plus.device.getInfo方法。为了保证向下兼容,目前还可以使用,但不一定可以获取到正确的值。

注意:调用plus.device.uuid不会触发授权提示框


二、HBuilderX2.0.0之后的版本使用

// 获取设备信息  
plus.device.getInfo({
success:(e)=>{
console.log('getDeviceInfo success: '+JSON.stringify(e));
},
fail:(e)=>{
console.log('getDeviceInfo failed: '+JSON.stringify(e));
}
});

方法调用成功,返回信息包括:国际移动设备身份码、国际移动用户识别码、设备的唯一标识(UUID)等信息。

注意:Android平台各大应用商店已经要求API等级(targetSdkVersion)为26或以上。高版本Android系统完善了授权系统,获取设备信息(如imei)需要经过用户授权确认,弹出获取设备信息的授权提示框:


在Android平台当应用需要获取设备信息时调用此API,就会触发弹出授权提示框,不获取设备信息是不会弹出设备信息授权提示框,并且需要用允许才能获取到对应的值。


三、andorid 10版本采用OAID

Android10以前获取设备标识(如IMEI、IMSI、Wi-Fi MAC地址等)涉及用户隐私且需用户授权,Android10+系统不再支持获取设备标识信息。

为解决此问题移动安全联盟联合各手机厂商推出移动智能设备标识公共服务平台提供补充设备标识体系,包括匿名设备标识符(OAID)、开发者匿名设备标识符(VAID)和应用匿名设备标识符(AAID)。 匿名设备标识符(OAID)最长为64位字符串,所有应用获取的值相同,可用于个性化推荐、广告等业务。 系统首次启动后生成,用户手动重置、恢复出厂设置、设备商重置、被刷机等操作会重置此标识。

plus.device.getOAID({  
success:(e)=>{
console.log('getOAID success: '+JSON.stringify(e));
},
fail:(e)=>{
console.log('getOAID failed: '+JSON.stringify(e));
}
});

注意:必须在Android - 10+,同时仅在华为、OPPO、VIVO、小米、联想等设备支持。


四、非 App端设备Id

非 App 端由 uni-app 框架生成并存储,清空 Storage 会导致改变。

uni.getSystemInfoSync().deviceId

在非app的使用场景下,我们可以使用这种方式来模拟唯一标识UUID。当然也可以使用fingerprint2.js来生成浏览器指纹标识,经测试也存在一定的不精准性(官网称具有95%以上的唯一性,大家可以下载来尝试),关于fingerprint2.js的介绍:https://www.fly63.com/nav/3481


链接: https://fly63.com/article/detial/11013

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!