手机设备唯一标识相关概念
IMEI
定义
IMEI(International Mobile Equipment Identity)是国际移动设备识别码的缩写。俗称“手机串号”、“手机串码”、“手机序列号”,用于在GSM移动网络中识别每一部独立的手机,相当于手机的身份证号码。全球每部通过正规渠道销售的GSM手机均有唯一的IMEI码。
IMEI码适用于GSM和WCDMA制式的移动电话和卫星电话,而CDMA手机采用MEID码,与IMEI码有所区别
分配机构
IMEI码由GSMA协会统一规划,并授权各地区组织进行分配,在中国由工业和信息化部电信终端测试技术协会(TAF)负责国内手机的入网认证,其他分配机构包括英国BABT、美国CTIA等。
组成
IMEI由15位数字组成,其组成为:
- 前6位数(TAC,Type Approval Code)是"型号核准号码",一般代表机型。
- 接着的2位数(FAC,Final Assembly Code)是"最后装配号",一般代表产地。
- 之后的6位数(SNR)是"串号",一般代表生产顺序号。
- 最后1位数(SP)通常是"0",为检验码,目前暂备用。
查看方法
手机拨号键盘输入*#06#即可查询
MEID
定义
MEID 移动设备识别码(Mobile Equipment Identifier)是CDMA手机的身份识别码,也是每台CDMA手机或通讯平板唯一的识别码。
通过这个识别码,网络端可以对该手机进行跟踪和监管。
分配机构
MEID号码是由Telecommunications Industry Association(TIA)进行分配管理的。
MEID的申请,是需要付费的。价格是每1M范围的MEID的费用是8000美元,每增加1M范围的MEID号码需要额外付费8000美元。
组成
如图所示,MEID由14个十六进制字符标识,第15位为校验位,不参与空中传输
- RR:范围A0-FF,由官方分配
- XXXXXX:范围 000000-FFFFFF,由官方分配
- ZZZZZZ:范围 000000-FFFFFF,厂商分配给每台终端的流水号
- C/CD:0-F,校验码
这些字段被定义为10进制时,有以下格式
- RR – 有效范围 ’99’, ’98’, ’97’ ,全球统一管理
- XXXXXX – 有效范围 000000–999999。
- ZZZZZZ – 有效范围 000000-- 999999。
- C – 有效范围 0 – 9 – 不参与空中传输
查看方法
手机拨号键盘输入*#06#即可查询
IMSI
定义
IMSI(International Mobile Subscriber Identity)国际移动用户识别码,是用于区分蜂窝网络中不同用户的、在所有蜂窝网络中不重复的识别码。在GSM、UMTS和LTE网络中,IMSI来自SIM卡,在CDMA2000网络中则是直接来自手机,或者RUIM。
分配机构
IMSI的格式由国际电信联盟(ITU)的E.212标准定义
组成
IMSI由一串十进制数字组成,最大长度为15位。实际使用的IMSI的长度绝大部分都是15位,短于15位的例子少见。
示例:
IMSI:310150123456789
MCC | 310 | 美国 |
---|---|---|
MNC | 150 | 美国电话电报公司(AT&T Mobility) |
MSIN | 123456789 |
IMSI:460001357924680
MCC | 460 | 中华人民共和国 |
---|---|---|
MNC | 00 | 中国移动 |
MSIN | 1357924680 |
UUID
定义
UUID(Universally Unique Identifier)全局唯一标识符,定义为一个字符串主键,在时间和空间都完全惟一的系统信息。
UUID是基于当前时间、计数器(counter)和硬件标识(通常为无线网卡的MAC地址)等数据计算生成的。UUID可以被任何人独立创建,并按需发布。,因为它们是不会被复制的独特标识符。属性协议允许设备使用UUID识别属性类型,从而不需要用读/写请求来识别它们的本地句柄。
分配机构
UUID没有集中管理机构
组成
UUID是一个128比特的数值,为了提高效率,常用的UUID可缩短至16位。
采用32位数字组成,编码采用16进制
UUID的编码规则:
- 1~8位采用系统时间,在系统时间上精确到毫秒级保证时间上的惟一性;
- 9~16位采用底层的IP地址,在服务器集群中的惟一性;
- 17~24位采用当前对象的HashCode值,在一个内部对象上的惟一性;
- 25~32位采用调用方法的一个随机数,在一个对象内的毫秒级的惟一性。
生成方法
通常平台会提供生成的API
GUID
定义
全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符。
GUID主要用于在拥有多个节点、多台计算机的网络或系统中。在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID。GUID 的总数达到了2128(3.4×1038)个,所以随机生成两个相同GUID的可能性非常小,但并不为0。所以,用于生成GUID的算法通常都加入了非随机的参数(如时间),以保证这种重复的情况不会发生。
GUID一词有时也专指微软对UUID标准的实现。
分配机构
UUID没有集中管理机构
组成
GUID 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中每个 x 是 0-9 或 a-f 范围内的一个十六进制数。例如:6F9619FF-8B86-D011-B42D-00C04FC964FF 即为有效的 GUID 值。
生成方法
通常平台会提供生成的API
IDFA
定义
IDFA (IdentifierForIdentifier)是苹果 iOS 6 开始新增的广告标识符,在同一个设备上的所有App都会取到相同的值,是苹果专门给各广告提供商用来追踪用户而设的,可以简单理解为 iPhone 的设备临时身份证
重置方式
- 重置系统
- 设置程序 -> 通用 -> 还原 -> 还原位置与隐私
- 设置程序-> 通用 -> 关于本机 -> 广告 -> 还原广告标示符 -> 重启
查看方法
苹果公司提供获取的api接口:
#import <AdSupport/AdSupport.h>
[[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
IDFV
定义
IDFV - Identifier For Vendor(应用开发商标识符)Vender是指应用提供商
给Vender标识用户用的,每个设备上属同一个Vender的应用获取到的值相同。
- 线上: IDFV 会根据App Store给的数据决定,卸载重装后也一致 (不同设备是不一样的)
- 开发: 如果不是从App Store安装的,那么会根据bundle ID的前两个字端进行计算,所以 com.example.a 和 com.example.b 在开发阶段计算出来的IDFV 会是一样的.
重置方式
(未从App Store 下载时)当 bundle ID为 com.example.? 所有的app卸载之后会重置IDFV
查看方法
#import <AdSupport/ASIdentifierManager.h>
[[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString]
# UDID **定义**
UDID (Unique Device Identifier)iOS设备的唯一识别码,它由40位16进制数的字母和数字组成
**重置方式**
每台iOS设备的UDID是唯一且永远不会改变(除了越狱,没什么办法可以改变它)
**查看方法** ```objectivec [[UIDevice currentDevice] uniqueIdentifier]; ``` **iOS 5.0 开始废弃,采用改方法获取,审核会被拒.之所以废弃是因为通过UDID可以锁定一台设备,存在一定的风险** # OpenUDID **定义**
开源组件,每台iOS设备的OpenUDID是通过第一个带有OpenUDID SDK包的App生成,如果你完全删除全部带有OpenUDID SDK包的App(比如恢复系统等),那么OpenUDID会重新生成,而且和之前的值会不同,相当于新设备。
**优点**
- 没有用到MAC地址。(注:MAC地址跟UDID一样,存在隐私问题。不能保证以后不会禁用MAC地址。)
- 不同设备能够获取各自唯一的识别码,保证了唯一性,可以用于以往UDID的相关用途。
- 当设备上安装第二个使用了OpenUDID方案的应用程序,将会从UIPasteboard中获取唯一识别码,这里取到的就是之前第一个应用保存到UIPasteboard中的。【前提:设备上有一个使用了OpenUDID的应用存在】
缺点
- 当将设备上所有使用了OpenUDID方案的应用程序删除,且设备关机重启,xcode彻底清除并重启,重装应用程序去获取OpenUDID,此时OpenUDID变化,与之前不一样。
- 所有OpenUDID应用卸载后,由UIPasteboard保存的数据即被清除,重装会重新获取新的OpenUDID。