Android_CN_OAID icon indicating copy to clipboard operation
Android_CN_OAID copied to clipboard

哪个方法最可靠

Open liulance opened this issue 3 years ago • 12 comments

你好,最近项目需要获取唯一设备号,找了好多方法都不行,咱们这个里面哪个是最可靠的,不管是卸载重装还是什么情况,都是唯一不变的?多谢

liulance avatar Jun 09 '21 11:06 liulance

感觉都不是特别可靠:

  • IMEI:Android 10+ 获取不到了;
  • AAID:系统需自带 Google Play Services 才支持,且用户可以在系统设置中重置;
  • OAID:基本上是国内知名厂商 Android 10+ 才支持,且用户可以在系统设置中重置;
  • AndroidID:可能为空;
  • PseudoID:可能重复;
  • GUID:Android 10+ 卸载APP后会丢失;
  • WidevineID:未经过验证,不知道可靠性如何;

最好是通过服务端从以上标识中通过拜占庭容错方案得到可靠的设备唯一标识。不能使用服务端的话,综合来看 AndroidID 和 OAID 相对可靠一些吧,项目中我已经提供了一个getClientId/getClientIdMd5/getClientIdSha1获取客户端唯一标识,依次获取IMEI、AndroidID、OAID、WidevineID、GUID……

liyujiang-gzu avatar Jun 10 '21 01:06 liyujiang-gzu

你好,我们项目集成了安全联盟 获取OAID 的SDK,跟你们这个有冲突吗

liulance avatar Jun 10 '21 02:06 liulance

你好,我们项目集成了安全联盟 获取OAID 的SDK,跟你们这个有冲突吗

从本库的4.0.0版本开始不会有冲突了

liyujiang-gzu avatar Jun 10 '21 02:06 liyujiang-gzu

那集成您这个SDK 具体有什么优势

liulance avatar Jun 10 '21 02:06 liulance

那集成您这个SDK 具体有什么优势

参阅 当前项目跟官方的有什么区别

liyujiang-gzu avatar Jun 10 '21 03:06 liyujiang-gzu

那集成您这个SDK 具体有什么优势

主要有两点优势:

  • 开放源代码,无限制,对个人开发者来说更友好。
  • 适配的机型更广泛,不过仍受限于厂商的支持情况。

liyujiang-gzu avatar Jun 10 '21 03:06 liyujiang-gzu

实时获取和预获取,哪个方案更好点?有什么区别呢 ?

liulance avatar Jun 10 '21 04:06 liulance

实时获取和预获取,哪个方案更好点?有什么区别呢 ?

这个要看应用场景来。

  • 预获取只能按优先级获取能拿到的值,IMEI、AndroidID、OAID、WidevineID、GUID只会有其中一个,在整个APP生命周期内有效,多次调用都不会重新获取,具体方法是getClientIdgetClientIdMD5getClientIdSHA1
  • 实时获取可以分别获取IMEI、AndroidID、OAID、WidevineID、GUID,每次调用都会重新获取,具体方法是getIMEIgetAndroidIDgetOAIDgetWidevineIDgetGUID

liyujiang-gzu avatar Jun 10 '21 04:06 liyujiang-gzu

好的,多谢

liulance avatar Jun 10 '21 05:06 liulance

image 你好,这里即初始化安全联盟的,又获取咱们的 OAID 有问题吗?会不会影响什么

liulance avatar Jun 11 '21 05:06 liulance

image 你好,这里即初始化安全联盟的,又获取咱们的 OAID 有问题吗?会不会影响什么

需要实际测试,能拿到结果应该就没影响

liyujiang-gzu avatar Jun 11 '21 09:06 liyujiang-gzu

能拿到,都是一样的结果

liulance avatar Jun 11 '21 09:06 liulance

感觉都不是特别可靠:

  • IMEI:Android 10+ 获取不到了;
  • AAID:系统需自带 Google Play Services 才支持,且用户可以在系统设置中重置;
  • OAID:基本上是国内知名厂商 Android 10+ 才支持,且用户可以在系统设置中重置;
  • AndroidID:可能为空;
  • PseudoID:可能重复;
  • GUID:Android 10+ 卸载APP后会丢失;
  • WidevineID:未经过验证,不知道可靠性如何;

最好是通过服务端从以上标识中通过拜占庭容错方案得到可靠的设备唯一标识。不能使用服务端的话,综合来看 AndroidID 和 OAID 相对可靠一些吧,项目中我已经提供了一个getClientId/getClientIdMd5/getClientIdSha1获取客户端唯一标识,依次获取IMEI、AndroidID、OAID、WidevineID、GUID……

拜占庭容错方案是不行的,要解决需要依赖机器学习算法和跨app的大量数据归因,才能解决海量ID下的碰撞和多发。

laoyang75 avatar Dec 27 '23 16:12 laoyang75