移动设备ID信息
在移动端产品的开发中,如何定位一台设备,定位一个人,是一个棘手的问题,在适配的过程中也会遇到千奇百怪的情况。本文介绍了常用的设备ID以及标识设备的方法与一些常见问题。 移动设备ID可分为三部分:硬件层面,系统层面,软件层面。
系统区别
由于IOS系统限制问题,在IOS上可获取的设备ID为IDFV、IDFA,其他设备ID需要越狱手机才可获取。 而在Android系统中,通常使用IMEI、MAC去标识一台设备。但除了这几个ID之外,还有MEID、SN码、ANDROID_ID、IMSI、ICCID等ID,各自有着自己的用途。
Android系统相关ID信息
以下是一个Android手机正常可获取到的ID信息
下面逐个介绍这些ID以及用途
硬件层面
硬件层面的ID标识一般用于跨应用获取设备信息,主要有:标识设备的IMEI、MEID、MAC(网卡)及标识SIM卡的IMSI、ICCID。 硬件信息烧制在硬件之中,属于底层信息,不可更改。但可以通过修改系统调用API达到修改获取的目的。
IMEI、MEID
简介
IMEI、MEID都是用于标识一台物理设备的ID信息。在Android 8.0以下系统提供的API中,会根据不同条件返回二者之一的信息。
IMEI: 国际移动设备识别码,是区别移动设备的标志,一般用于标识某一台独立的设备,双卡双待的手机有两个IMEI号。 格式:15位十进制数
MEID: 同样也是移动设备标识码,但一般用于CDMA制式的设备上,是ESN码的升级版。 格式:14位十六进制数
权限
获取时,二者均需要开启权限:READ_PHONE_STATE。 在Android 6.0以上的版本中,若需要获取该权限的内容,第一次启动时系统会给出弹窗提示: XXX需要使用电话权限...
API
Android 8.0以上的系统,TelephonyManager提供了两个独立的API以获取IMEI和MEID: getImei 、 getMeid 。两个API都可传入下标号获取多个设备号信息(截止今天8.0以上版本约占市场份额的6%)。 Android 8.0以下的系统获取IMEI或MEID的API为TelephonyManager.getDeviceId(),若当前设备有MEID号,则优先返回MEID,否则返回IMEI号。则获取到的设备ID需要通过长度判断才能知晓该ID为I