iOS开发iOS/Swift/ObjciOS面试题

浅谈移动端设备标识码:DeviceID、IMEI、IDFA、UD

2018-07-17  本文已影响2214人  FlaminEcho

【心路历程】
最近刚好在思考工作中统计数据所用的标识码产生的数据误差到底有多大,借此机会几番搜索资料+请教大神,整理出此文。

因为自己是产品经理,所以出发点是整理知识点、理解个大概、知道什么不能用、什么标识是靠谱的,并不研究太深入。毕竟非专业开发,有时候若了解知识点太深入,反倒会更困惑(关联知识点太多)。即使研究清楚了,工作中碰到和自己研究相悖的情况,也不好丢个文档告诉开发应该怎么做(除非很熟,但次数多了也伤感情)。

此外,不同公司、不同开发可能对同一个词的释义/实现方式有略微不同,但基本上是这样。
欢迎大家指正~

【先说结论】
UDID是移动端相对最靠谱的设备标识码,不论Android或iOS。

【名词释义】

【再说过程】
名词释义是不是看得一脸懵逼?莫慌,下图介绍了各个设备标识码的区别,以及目前的情况。

点击图片查看清晰大图

Android设备标识码

  1. device ID。
    又叫设备ID。可以用系统提供的TelephonyManager服务来获取,具有唯一性。其中又包括IMEI和MEID/ESN。
  2. IMEI:GSM设备返回的,并且是写在主板上的,重装APP不会改变IMEI。Android 6.0以上系统需要用户授予read_phone_state权限,如果用户拒绝就无法获得。
  3. mac地址:硬件标识符,包括WiFi mac地址和蓝牙mac地址。Android 6.0之后被禁止,若获取则会被判定为有害应用。
  4. MEID/ESN:CDMA设备返回的,一般不使用。
  5. UDID:用来标示设备的唯一性。获取UUID后,写入.so文件生成UDID。即使APP重装,值也不变,除非root手机(普通用户做不到)
  6. UUID:APP重装后会改变。

iOS设备标识码

  1. device ID。
  2. IMEI:iOS 5 之后被禁止。写在主板上,重装APP不会改变。
  3. IDFA:于iOS 6 时面世,可以监控广告效果,同时保证用户设备不被APP追踪的折中方案。可能发生变化,如系统重置、在设置里还原广告标识符。用户可以在设置里打开“限制广告跟踪”。
  4. mac地址:硬件标识符,包括WiFi mac地址和蓝牙mac地址。iOS 7 之后被禁止(同时禁止的还有OpenUDID)。
  5. UDID:用来标示设备的唯一性 。iOS 6 之后被禁止获取系统原生的UDID,但可以通过uuid,写入到钥匙串中,从而获得自定义的UDID(非系统原生),即使用户重装APP,只要每次都取这个钥匙串返回,就是不变的。
  6. UUID:APP重装后会改变。

【总结】
若想用于数据统计,使用UDID是最靠谱的。

上一篇下一篇

猜你喜欢

热点阅读