帖子
帖子
用户
博客
课程
显示全部楼层
3
帖子
0
勋章
26
Y币

[建议] 关于唯一设备id、api.deviceId的建议

[复制链接]
发表于 2019-6-6 10:39:41
问题:
       怎么能获取设备唯一id?
定义:
       官方给的api.deviceId方法的定义是这样的:『设备唯一标识,字符串类型
由于系统限制,iOS系统上面无法获取设备唯一标识udid、IMEI号、Mac地址等信息,这里返回的是与证书相关联的uuid,即使应用卸载了重新安装值也不会变化。而安卓部分系统也有限制,一些设备上也无法获取到IMEI号、Mac地址等信息。
现象:
      项目中需要用到设备的唯一id传给后端,一开始使用的是官方的api方法(api.deviceId),在安卓和IOS下测试都没问题。直到后来项目在使用过程中出现了一个设备,两个不同的deviceId的问题,找了好久,才从这个模块里找到了线索 『https://docs.apicloud.com/Client-API/Device-Access/simInfoImp#a3  获取当前设备唯一标示(如果是GSM网络,返回IMEI号吗;如果是CDMA网络,返回MEID号码)』。
分析:
      1.首先从官方的定义可以知道,api.deviceId在IOS下返回的是与证书相关的UUID,即使卸载重装也不会变化。但是,注意但是,在安卓下,就有可能返回 IMEI、Mac地址(甚至其他的东西,这个没全量测试过,也不知道)。
      2.我的理解是有的手机拿到的是IMEI,有的手机拿到的是MAC。其实这样也无所谓,只要能保证每个设备拿到的值是固定不变的。
实际情况:
      通过上面的2条分析,看似拿deviceId很靠谱。但实际情况是,在拿到IMEI的手机上,当你切换网络为WCDMA后,返回的是另外一个值(MEID)。也就是说,在部分安卓手机上,你使用WCDMA制式的网络和其他网络(如 GSM 、TD-SCDMA、TD-LTE),这个方法会返回两个不同的值(IMEI 和 MEID)(『https://docs.apicloud.com/Client-API/Device-Access/simInfoImp#a3  获取当前设备唯一标示(如果是GSM网络,返回IMEI号吗;如果是CDMA网络,返回MEID号码)』这里也佐证了这个问题)。

官方能给出一个拿到设备唯一 ID的方法或者模块吗 ?

3
帖子
0
勋章
26
Y币
接着说说MAC地址,后来没招了找了个收费模块『https://docs.apicloud.com/Client-API/Func-Ext/phoneInfoMore#a1』,使用它的getMacAddressNew方法获取设备的mac地址。

经对比发现,安卓下(可能是部分设备,没全量测试过)这个方法返回的mac地址其实就是设备的wlan mac(可在系统设置-关于手机里查看到)。

在网上搜索了下,发现很多手机厂商(比如华为)为了防止wifi被追踪,会默认开始 wlan mac 随机变化的功能,也就是说取这个值也不靠谱(我项目里之所以用这个值,是因为我门用到的设备是同一批次的,在上面测试发现没有 wlan mac 随机变化的问题)。

也就是说,虽然我恰巧能用mac,但是mac实际上比IMEI还不靠谱。。。
3
帖子
0
勋章
26
Y币
请官方尽快给出一个稳定不变、能唯一确认某个设备的方法或者模块啊!!!
42
帖子
4
勋章
1万+
Y币
给你移到建议区
216
帖子
5
勋章
5917
Y币
安卓碎片化太厉害了。不同厂商都是安卓有修改。这种估计要拿到整个唯一的方案有点悬吧。
3
帖子
0
勋章
26
Y币
续弦的歌 发表于 2019-6-6 10:45
接着说说MAC地址,后来没招了找了个收费模块『https://docs.apicloud.com/Client-API/Func-Ext/phoneInfoMo ...

测试过程中发现:wlan mac有时候无规律的会变成 20:00:00:00:00:00 ,坑啊!!!!
3
帖子
0
勋章
26
Y币
52yaoer 发表于 2019-6-6 17:59
安卓碎片化太厉害了。不同厂商都是安卓有修改。这种估计要拿到整个唯一的方案有点悬吧。 ...

那有没有可能在APP安装后初次启动的时候随机生成一个唯一的UUID,存在本地,以后直接取本地生成的这个

但是这个方案有个疑问就是:本地怎么存才是永久的,比如卸载APP重装或者重装手机系统怎样才能保证这个存储不能丢?
3
帖子
0
勋章
26
Y币

有什么好的方法吗?焦急啊。。。

我现在取的是设备的 serial number ,我网上搜了下,貌似这个还算靠谱点
您需要登录后才可以回帖 登录

本版积分规则