1.Vendor标识符
identifierForVendor
一个英文字符串,对于相同的产品商(这里指com.zhang.*,也就是前缀一样),其唯一的标识设备。
* 这个值对于相同的产品商在相同的设备上是相同的。
* 这个值在不同的产品商在相同的设备上是不同的。
* 在不同的设备上是不同的(不管产品商是否一致)。
一般来说,产品商是根据AppStore上的data确定的.如果app不是从AppStore下载安装的(例如企业版app和还在development的app),那么这个标识符是根据app的bundle id计算出来的,是bundle id的反转DNS格式。
在iOS6上,前两个字符串用来(com.zhang.demo中的com.zhang.)生成vendor id,如果bundle id只有一个组成(demo),那么就用整个bundle id来生成。
在iOS7,除了最后一个组件,其他的都用来生成vendor id,如果bundle id只有一个组成(流入demo),那么就用整个bundle id来生成。
例如:
如果它的值是空的,等待并且稍后重新获取该值,这种情况是可能发生的,例如用户重启了手机,而且在用户解锁之前。
当你使用广告服务的时候,使用advertisingIdentifier,而不是使用该属性。
获取方式:
NSLog(@"%@",[[[UIDevice currentDevice] identifierForVendor] UUIDString]);
2.IDFA
advertisingIdentifier
一个英文字符串,对于每一个设备是唯一的,仅仅用于广告服务。不像identifierForVendor,如果相同的公司出品的产品的com.shuquwangluo.相同,identifierFOrVendor是返回所有相同给的值。这个值是可能改变的,例如用户抹去设备,因此开发者不能去缓存它。
注意:在iOS10和以后,当用户限制广告踪迹(在设置—》隐私—》广告—》限制广告踪迹)advertisingIdentifier会返回所有的0。
如果它的值是空的,等待并且稍后重新获取该值,这种情况是可能发生的,例如用户重启了手机,而且在用户解锁之前。
测试:
当我没有限制广告踪迹之前: 539477AE-36AE-4E33-B22B-B9BF30BB2D07
当我限制广告踪迹后: 00000000-0000-0000-0000-000000000000
获取方式:
NSLog(@"%@",[[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString]);
3.CFUUID
从iOS2.0开始就已经出现了CFUUID,它是CoreFoundation的一部分,因此属于C语言风格。CFUUIDCreate方法用来创建CFUUIDRef,并且可以获取一个响应的字符串。
获取方式:
CFUUIDRef cfuuid = CFUUIDCreate(kCFAllocatorDefault);
NSString *cfuuidStr = (NSString *)CFBridgingRelease(CFUUIDCreateString(kCFAllocatorDefault, cfuuid));
NSString *cfuuidStr = (NSString *)CFBridgingRelease(CFUUIDCreateString(kCFAllocatorDefault, cfuuid));
NSLog(@"%@",cfuuidStr);
这个CFUUID值系统并没有存储,每次调用CFUUIDCreate,系统都会返回一个新的唯一标识符。如果你希望存储这个值,需要用NSUserDefault或者其他存储方式进行存储。
例如: 2A2F49D3-6473-4558-9035-26E14F53691D
4.NSUUID
创建和返回一个UUID,该UUID是RFC4122版本的随机字节。获取方式:
[[NSUUIDUUID] UUIDString]
和CFUUID一样,这个值系统也不会存储,每次调用的时候都会获取一个新的唯一标识符。如果要存的话需要自己操作。
5.UDID
UDID在iOS5以及以后就被启用了。在SDK里面没有找到相关的介绍,这里就不在介绍了。
下面是用Console输出的结果:
2016-09-27 09:32:13.540549 IDADemo[3837:1410105] 1、vender:2F527F67-6800-48F2-B3CF-42697B6BDB3F 2016-09-27 09:32:13.540596 IDADemo[3837:1410105] 2、NSUUID:A8C331F4-6ADD-4025-BF7C-0E83275BC1B1 2016-09-27 09:32:13.540646 IDADemo[3837:1410105] 3、CFUUID:324FF6C1-8962-492D-8215-7F2763632EDA 2016-09-27 09:32:13.541177 IDADemo[3837:1410105] 4、idfa:539477AE-36AE-4E33-B22B-B9BF30BB2D07 2016-09-27 09:32:13.541203 IDADemo[3837:1410105] 5、UDID:已经弃用,SDK里面没有找到相关介绍
总结
1.UUIDs(Universally Unique Identifieers)也被叫做GUIDs(Globally Unique Identifiers)或者IIDs(Interface Identifiers),它是一个128为字节的值。标准的UUIDs是由ASCII代表的,例如:68753A44-4D6F-1226-9C60-0050E4C00067 。
2.以上的各种ids,除了CFUUID不是NSUUID类之外,其他的几个都是NSUUID类型。