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));
    NSLog(@"%@",cfuuidStr);
这个CFUUID值系统并没有存储,每次调用CFUUIDCreate,系统都会返回一个新的唯一标识符。如果你希望存储这个值,需要用NSUserDefault或者其他存储方式进行存储。
例如: 2A2F49D3-6473-4558-9035-26E14F53691D
4.NSUUID
创建和返回一个UUID,该UUID是RFC4122版本的随机字节。获取方式:
[[NSUUIDUUID] UUIDString]
和CFUUID一样,这个值系统也不会存储,每次调用的时候都会获取一个新的唯一标识符。如果要存的话需要自己操作。
5.UDID
UDID在iOS5以及以后就被启用了。在SDK里面没有找到相关的介绍,这里就不在介绍了。
 
下面是用Console输出的结果:
 
-- ::13.540549 IDADemo[:] 、vender:2F527F67--48F2-B3CF-42697B6BDB3F
-- ::13.540596 IDADemo[:] 、NSUUID:A8C331F4-6ADD--BF7C-0E83275BC1B1
-- ::13.540646 IDADemo[:] 、CFUUID:324FF6C1--492D--7F2763632EDA
-- ::13.541177 IDADemo[:] 、idfa:539477AE-36AE-4E33-B22B-B9BF30BB2D07
-- ::13.541203 IDADemo[:] 、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类型。

最新文章

  1. Android之Json的学习
  2. 制作Html标签以及表单、表格内容
  3. BZOJ K大数查询(分治)(Zjoi2013)
  4. FireFox背景亮度修改
  5. 《Java程序员修炼之道》
  6. hdu2141AC代码分享
  7. Highcharts获取json数据展现pie饼图
  8. 关于iOS开发中info.plist文件的解读
  9. Angular - - angular.bind、angular.bootstrap、angular.copy
  10. java虚拟机启动参数整理
  11. yii2-swiftmailer入门
  12. The 11th tip of DB Query Analyzer
  13. hover变化图片
  14. 关于HTMl CSS
  15. 转发: 关于ST MCU的UID详细说明
  16. ES6 入门Promise
  17. [转]Angular CLI 安装和使用
  18. Nginx管理脚本
  19. 20165326 学习基础和c语言基础调查
  20. Xcode脚本自动化打包问题:xcrun: error: unable to find utility "PackageApplication", not a developer tool or in PATH

热门文章

  1. 使用Nodejs+Protractor搭建测试环境
  2. Spring MVC 对于@ModelAttribute 、@SessionAttributes 的详细处理流程
  3. Entity Framework 实体框架的形成之旅--实体框架的开发的几个经验总结
  4. 质数的判断,实现bool IsPrime(int number)
  5. 检索 COM 类工厂中 CLSID 为 {28E68F9A-8D75-11D1-8DC3-3C302A000000} 的组件失败,原因是出现以下错误: 80040154 没有注册类 (异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))
  6. CodeSnippet.info 开源说明 和 环境搭建 (第一版)
  7. .net用SQL Server进行session会话管理
  8. HTTP 错误 500.19 - Internal Server Error 错误解决
  9. 更改(修改)mysql自动增序列改变从1000开始
  10. 深入浅出Java多线程