① android 设备唯一标识
IMEI 国际移动设备身份码 目前GSM/WCDMA/LTE手机终端需要使用IMEI号码,在单卡工程中一个手机号对应一个IMEI号,双卡手机则会对应两个IMEI号,一张是手机卡对应一个。
需要权限 <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
Mac 指的就是我们设备网卡的唯一设别码,该码全球唯一,一般称为物理地址,硬件地址用来定义设备的位置,硬件标识,刷机和恢复出厂设置不擦除,并且大多数android都有wifi模块
一般是指wifi模块或者蓝牙模块的mac地址。
缺点:
Android-Q以后 有新的Api获取mac地址,SDK未开放Api,暂不能测试
在设备首次运行的时候,系统会随机生成一64位的数字,并把这个数值以16进制保存下来,这个16进制的数字就是ANDROID_ID,但是如果手机恢复出厂设置这个值会发生改变,如果设备被root,这个值可以任意改变。
缺点
Android 8.0 以后
Android 8.0以前
Android 8.0以后
UUID(Universally Unique Identifier)全局唯一标识符,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。
每次调用都会生成一个全新的标识符
因为每次调用都生成新的,通常使用UUID都会存储下来或者和其它字段拼接使用,CUID库就使用了 uuid来拼接device_id字段
Advertising ID(广告ID)是由Google Play服务提供的用户特定的,唯一的,可重置的广告ID,适用于广告用例。如果你应用程序想要使用广告ID,你的设备就必须安装Google Play Service
缺点:
Instance ID的作用域为创建它的应用, 这样可以防止他人利用该标识符跟踪用户在不同应用中的行为。 此外,此标识符还可以轻松地进行重置,因为用户可以清除应用数据或重新安装应用后重置。
缺点:
② 为什么很多安卓应用都要获取IMEI
IMEI是一个串号,每个手机出厂都有的。
IMSI确实可以用来识别每一个移动用户,但是IMSI很长,很难记忆,另外,传统电话号码都用0-9的数字来表示,有个用户习惯问题。所以就规定了ISDN号码,即我们现在用的手机号码,通过设定和IMSI号码绑定来识别用户。
ISDN号码完全是规定,因为香港的移动号码和固话是相同的。原来cdma制式的大灵通也采用的是固定电话的编号方式。
其实那都是软件开发者的统计需要,装个看书软件也啥都要查看联系人,查看短信,后台发短信,后台打电话,查看地里位置,有不要嘛?当然没有,但是他可以调查我们的爱好,然后后台给我们推软件,当然会跑流量也存在偷窥我们隐私功能,你可以用联想的乐安全和LBE安全大师这俩安全软件可以禁止一切后台启动和限制查看我们的隐私。预防流量丢失和后台开启我们的录音,电话,短信,摄像头功能等。
③ 移动端设备标识码-DeviceID、IMEI、IDFA、UDID
一:总览
iOS设备标识码
1、 device ID
2、 IMEI :iOS5之后被禁止,写在主板上,不会变化。
3、 IDFA :Identifier For Advertising,iOS独有的广告标识符。但是用户可以更改,不适用于做唯一标识。系统重置、在设置里还原广告标识符,都会更改IDFA。
IDFA是一串16进制的32位串。
IDFA是苹果iOS 6开始新增的广告标识符,英文全称是Identifier for Advertising,用于给开发者跟踪广告效果用的,可以简单理解为iPhone的设备临时身份证号,是说临时身份证号,是因为IDFA允许用户更换。iOS用户可以通过(设置-通用-还原-还原位置与隐私)更换IDFA。iOS10系统提供用户禁止广告跟踪功能,用户勾选了这个功能后,应用程序讲无法取读到设备的IDFA。
IDFA是目前苹果生态广告交易的主要标识,一般跟广告商 交易一个用户后,广告商 需要给你提供用户的 IDFA作为凭证。主流的广告平台广点通、新浪粉丝通对账都是基于IDFA的
4、 MAC地址 :硬件标识符,包括WiFi mac地址和蓝牙mac地址。iOS 7 之后被禁止(同时禁止的还有OpenUDID)。
MAC地址在网络上用来区分设备的唯一性,接入网络的设备都有一个MAC地址,他们肯定都是不同的,是唯一的。一部iPhone上可能有多个MAC地址,包括WIFI的、SIM的等,但是iTouch和iPad上就有一个WIFI的,因此只需获取WIFI的MAC地址就好了,也就是en0的地址。MAC地址就如同我们身份证上的身份证号码,具有全球唯一性。但在iOS7之后,如果请求Mac地址都会返回一个固定值。
5、 UDID :用来标示设备的唯一性 。iOS 6 之后被禁止获取系统原生的UDID,但可以通过uuid,写入到钥匙串中,从而获得自定义的UDID(非系统原生),即使用户重装APP,只要每次都取这个钥匙串返回,就是不变的。
UDID是由40个字符的字母和数据组成
Unique Device Indentifier,用户不能更改,适合做唯一标识。但是苹果禁止应用获取UDID。
6、 UUID :APP重装后会变化
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重装之后会改变
---未整理完,待续---
IMEI:International Mobile Equipment Identity,国际移动设备身份码的缩写。是由15位数字组成的“电子串号”,它与每台手机一一对应,每个IMEI在世界上都是唯一的。
UDID:Unique Device Identifier,唯一设备标识码。
UUID:Universally Unique Identifier,通用唯一识别码。目前最广泛应用的UUID,是微软公司的全局唯一标识符GUID。其目的是让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。