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类型。

iOS不同IDS说明的更多相关文章

  1. IOS APP IDs

    感谢分享 说下 APP ID 的组成为  APP ID Prefix + APP ID suffix APP ID Prefix 为10个字符  你不用管它 APP ID Suffix  这个有点讲究 ...

  2. Xcode7.1环境下上架iOS App到AppStore 流程② (Part 二)

    前言部分 part二部分主要讲解 iOS App IDs 的创建.概要文件的配置.以及概要文件安装的过程. 一.iOS App IDs 的创建 1)进入如图1所示界面点击右上角箭头所指的加号 进入iO ...

  3. 最新Xcode7.x环境下上架iOS App到AppStore 完整流程

    最新Xcode7.x环境下上架iOS App到AppStore 流程  part 1 前言部分 之前App要上架遇到些问题到网上搜上架教程发现都是一些老的版本的教程 ,目前iTunesConnect ...

  4. 发布 Ionic iOS 企业级应用

    转自:http://www.jianshu.com/p/c12fae498975 Ionic 项目开发完成之后呢,自然就是打包发布了,今天说说 iOS 的打包和发布.iOS 的发布方式分为三种:iOS ...

  5. Cisco IOS Security command Guide

    copy system:running-config nvram:startup-config : to save your configuration changes to the startup ...

  6. 【转】Xcode7.1环境下上架iOS App到AppStore 流程 (Part 二)

    原文网址:http://www.cnblogs.com/ChinaKingKong/p/4964549.html 前言部分 part二部分主要讲解 iOS App IDs 的创建.概要文件的配置.以及 ...

  7. 【转】Xcode7.1环境下上架iOS App到AppStore 流程 -- 不错!!

    原文网址:http://www.jianshu.com/p/a8bd16be122f 1.官网地址 Apple Developer 地址:https://developer.apple.com/mem ...

  8. [iOS]使用Windows Azure來做iOS的推播通知 (转帖)

    這一篇我們用Windows Azure 的Mobile Service 來實作iOS的推播通知,底下我們分成三個階段來探討如何實作推播通知的服務: 第一階段: 開啓你的Windows Aure服務   ...

  9. Xcode7.1环境下上架iOS App到AppStore 流程 转

    来自:http://www.cnblogs.com/ChinaKingKong/p/4957682.html 前言部分 之前App要上架遇到些问题到网上搜上架教程发现都是一些老的版本的教程 ,目前iT ...

随机推荐

  1. VMware中网络设置之Bridged

    1.设置linux虚拟机Bridged模式. 2.查找网关地址:点击虚拟机工具栏编辑---Virtual Network Editor,选中VMnet0,然后在Bridged to 下拉框中选择可以本 ...

  2. 使用Python将HTML转成PDF

    主要使用的是wkhtmltopdf的Python封装--pdfkit 安装 1. Install python-pdfkit: $ pip install pdfkit 2. Install wkht ...

  3. Auto Mapper01

         在项目中一直在使用Auto Mapper技术,但是只是会简单的使用,对其里面的一些具体的细节和知识点不是很清楚,现在就跟着我从最基础的知识点来重新认识下,AutoMapper技术吧.     ...

  4. Sublime Text2配置过程

    今天Sublime Text2不知道为什么突然崩溃了,一直不能运行,没办法只有重装了,重装后按我的用途重新配置了一下,现将配置过程记录下来以备将来不时之需 说明:配置是在windows系统上进行的,其 ...

  5. Mac下github项目检出与提交

    项目检出 如果你的git还没有代码仓库,可以用过git的代码仓库页面新建一个你的仓库 创建git上的仓库后,我们还需要建立本地的仓库,所以打开Mac终端,建立本地仓库文件夹(这里我用HelloC),然 ...

  6. C#微信公众平台开发—高级群发接口

    涉及access_token的获取请参考<C#微信公众平台开发—access_token的获取存储与更新> 一.为了实现高级群发功能,需要解决的问题 1.通过微信接口上传图文消息素材时,J ...

  7. wcf和web service的区别

    1.WebService:严格来说是行业标准,不是技术,使用XML扩展标记语言来表示数据(这个是夸语言和平台的关键).微软的Web服务实现称为ASP.NET Web Service.它使用Soap简单 ...

  8. 介绍开源的.net通信框架NetworkComms框架 源码分析(十八 ) ConnectionListenerBase

    原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架  作者是英国人  以前是收费的 目前作者已经开源  许可是 ...

  9. 几种常见语言的命名空间(Namespace)特性

    命名空间提供了一种从逻辑上组织类的方式,防止命名冲突. 几种常见语言 C++ 命名空间是可以嵌套的 嵌套的命名空间是指定义在其他命名空间中的命名空间.嵌套的命名空间是一个嵌套的作用域,内层命名空间声明 ...

  10. 深入浅出Java多线程

    Java给多线程编程提供了内置的支持.一个多线程程序包含两个或多个能并发运行的部分.程序的每一部分都称作一个线程,并且每个线程定义了一个独立的执行路径. 多线程是多任务的一种特别的形式,但多线程使用了 ...