我们常常在app用会用到类似UDID,UUID,IDFA,IDFV等等类似的唯一标识,有时候也有点混乱,这篇就来主要讲讲这些标识和区分:
1.UUID
Universally Unique Identifier,通用唯一标识符,是一个32位的十六进制序列,同一台设备产生的UUID也是不一样的,UUID跟你的设备没有什么关系了,每次获取都不一样
获取方式:[NSUUID UUID].UUIDString
2.UDID
Unique Device Identifier,设备唯一标识符,是一个40位十六进制序列,我们可以使用iTunes和Xcode来获取这个值。
从iOS5之后,苹果就禁止了通过代码访问UDID,在这之前,可以使用[[UIDevice cuurrent] uniqueIdenfier] 这个方法来获取某设备UDID,现在是不可能了
3.IDFV
苹果提供了一个参数identifierForVendor来替代原来UDID的作用,但这个值是应用和设备两者都有关的
和真正的UDID有区别:也就是说App的开发者没有办法去区分某一台设备了,而是只能识别某个应用在某台设备上。
idfv的值是一定能取到的,所以非常适合于作为内部用户行为分析的主id,来标识用户,替代OpenUDID
*如果用户将属于此Vender的所有App卸载,则idfv的值会被重置,即再重装此Vender的App,idfv的值和之前不同。
获取方式:NSString *idfv = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
4.IDFA
广告id,在同一个设备上的所有App都会取到相同的值,是苹果专门给各广告提供商用来追踪用户而设的,用户可以在 设置->隐私->广告追踪 里重置此id的值,或限制此id的使用,故此id有可能会取不到值,一般用户都不知道有这么个设置,而且苹果这个设置默认打开,
*由于idfa会出现取不到的情况,故绝不可以作为业务分析的主id,来识别用户。
获取方式:
#import <AdSupport/AdSupport.h>
NSString *adId = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
5.MAC地址
*在iOS 7中苹果封杀了mac地址,使用之前的方法获取到的mac地址全部都变成了02:00:00:00:00:00。
所以我们一般用设备唯一标识都会使用IDFV+keychain的方式,保证app卸载再重装,也不会改变IDFV的值
*但是手机系统重装之后,还是会改变。