APPLE官方宣布在2013年5月后,使用 UUID的APP将不能通过审核,同时APPLE增加了广告标识符(IDFA)和IDFV。

1、有什么方法获取UUID?

//CFUUID
CFUUIDRef cfuuid = CFUUIDCreate(kCFAllocatorDefault);
NSString *cfuuidStr = CFBridgingRelease(CFUUIDCreateString(kCFAllocatorDefault,cfuuid)); /NSUUID
NSString *nsuuidStr = [[NSUUID UUID]UUIDString];

经过在IOS10上测试,发现每次生产的uuid均不相同,所以不具备作为唯一标识符的能力。

2、获取IDFA(广告标识符)

#import <AdSupport/AdSupport.h>

//获取限制开关是否打开
BOOL isTrackEnabled = [[ASIdentifierManager sharedManager]isAdvertisingTrackingEnaled]; //获取IDFA(广告标识符)
NSString * idsaStr = [[[ASIdentifierManager sharedManager]advertisingIdentfier]UUIDString];

优点:广告标识符,设备中全部App获取的均为一致,即使删除了App重新下载仍为一致。

缺点:1、若还原出厂设置,清空广告标识符,IDFA则会改变;

   2、限制广告的开关,只是一个bool值,并不会影响我们回去IDFA,但每次改变开关,均会导致IDFV改变;

故广告标识符,相对来说,可以作为我们App一个唯一性判断标准。

3、IDFV(针对Vender的identifer)

//获取IDFV(Vender标识符)
NSString * idsvStr = [[[ASIdentifierManager sharedManager]identifierForVendor]UUIDString];

这是针对Vender的一个标识符,何为Vender,其实就是我们bundleIdentifer的前面部分,例如com.apple.app1和com.apple.app2则具有相同的Vender(com.apple)。

优点:1、同一设备相同Vender的App,获取到的IDFV均为一致;

   2、用户无法直接手动限制或改变IDFV

缺点:1、删除所有同一Vender下的APP,在重新下载,IDFV则会改变(对于一般公司App数目不多,可以理解为,删除重新下载,IDFV就会发生改变)

   2、还原出厂设置会改变IDFV

故IDFV的稳定性不如IDFA,应优先选择IDFV,也可以两者相结合来追踪自己的App用户。

4、mac地址

MAC地址是:IEEE 进行管理和分配。每个MAC地址由两部分组成,分别是供应商代码和序列号。其中前24 位二进制代表该供应商代码。剩下的24 位由厂商自己分配。所以由IEEE保证前24位不重复,然后再由各个厂商保证后24位不重复,合起来,整个48bit的MAC地址就不会有重复的了。

但是在IOS7苹果对于sysctl和ioctl进行了技术处理,让MAC地址返回02:00:00:00:00:00。

关于IOS的唯一标识总结的更多相关文章

  1. [转]iOS设备唯一标识探讨

    转自:http://www.jianshu.com/p/b83b0240bd0e iOS设备唯一标识探讨 为了统计和检测应用的使用数据,几乎每家公司都有获取唯一标识的业务需求,在iOS5以前获取唯一标 ...

  2. 获取iOS设备唯一标识

    [获取iOS设备唯一标识] 1.已禁用-[UIDevice uniqueIdentifier] 苹果总是把用户的隐私看的很重要.-[UIDevice uniqueIdentifier]在iOS5实际在 ...

  3. iOS设备唯一标识的前世今生

    设备唯一标识 估计很多开发都有被要求过获取一下设备的唯一标识,获取设备的唯一标识经常使用在我们做统计或者是在保证一台设备登录亦或者是做IM的时候可能会考虑去使用它,这一次在自己的需求当中就有一个&qu ...

  4. ios设备唯一标识获取策略

    In iOS 7 and later, if you ask for the MAC address of an iOS device, the system returns the value 02 ...

  5. iOS设备唯一标识(可以用版)

    由于UDID和OpenUDID被禁用,系统自带的的识别唯一标识有两种 广告标示符(IDFA-identifierForIdentifier) 这是iOS 6中另外一个新的方法,advertisingI ...

  6. 获得iOS设备唯一标识

    使用-[UIDevice identifierForVendor]或是-[ASIdentifierManager advertisingIdentifier]来作为你框架和应用的唯一标示符.坦白的来说 ...

  7. iOS获取设备唯一标识的8种方法

    8种iOS获取设备唯一标识的方法,希望对大家有用. UDID UDID(Unique Device Identifier),iOS 设备的唯一识别码,是一个40位十六进制序列(越狱的设备通过某些工具可 ...

  8. ios开发——实用技术篇OC篇&获取设备唯一标识

    获取设备唯一标识 WWDC 2013已经闭幕,IOS7 Beta随即发布,界面之难看无以言表...,简直就是山寨Android. 更让IOS程序猿悲催的是,设备唯一标识的MAC Address在IOS ...

  9. IOS 生成设备唯一标识

    前言 iOS设备5.0以上放弃使用[[UIDevice currentDevice] uniqueIdentifier]来获得设备唯一ID iOS设备私有方法禁止用户获取和使用IMEI 需求 需要一个 ...

随机推荐

  1. Excel 回归分析

    1 分析两个变量和一个因变量的关系 降水,温度与生长的关系曲线 降水是连续的数,温度有三个温室,每个温室一个温度,生长也是连续的数. 作图的方法是将降水放在一列,然后生长根据温度放三列,同一个温度的放 ...

  2. (转)Nginx SSL+tomcat集群,request.getScheme() 取到https正确的协议

    转自http://www.cnblogs.com/interdrp/p/4881785.html 最近在做一个项目, 架构上使用了 Nginx +tomcat 集群, 且nginx下配置了SSL,to ...

  3. Python安装包或模块的多种方式汇总

    windows下安装python第三方包.模块汇总如下(部分方式同样适用于其他平台): 1. windows下最常见的*.exe,*msi文件,直接运行安装即可: 2. 安装easy_install, ...

  4. scala中的面向对象定义类,构造函数,继承

    我们知道scala中一切皆为对象,函数也是对象,数字也是对象,它是一个比java还要面向对象的语言. 定义scala的简单类 class Point (val x:Int, val y:Int) 上面 ...

  5. 拉风的服务器监控工具,随时掌握服务器动态,AgileEAS.NET SOA 平台服务器监控工具集介绍

    一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...

  6. Appirater -- app中提示用户为app评价的提示框

    Appirater是一段你可以嵌入自己工程中的代码,在用户使用应用一段时间后会自动弹出提示用户进行评分. 使用Appirater方面,你可以简单把源代码嵌入你的app工程中,并把以下代码添加至它的委托 ...

  7. 首师大附中互测题:50136142WXY的坑爹百度地图【B006】(可以喝的超大桶水)

    [B006]50136142WXY的坑爹百度地图[难度B]——————————————————————————————————————————————————————————————————————— ...

  8. CSS的Hack技术

    主要是用来解决兼容性的特殊方法: IE都能识别*;标准浏览器(如FF)不能识别*: IE6能识别*,但不能识别 !important, IE7能识别*,也能识别!important,还有# FF不能识 ...

  9. html和css书写规范

    HTML 规范 分离的标记.样式和脚本 结构.表现.行为分离 在可能情况下验证你的标记 使用编辑器验证你的标记是否正确,一般编辑器都自带有这个功能. 技术不支持的时候使用备胎,如canvas 编码格式 ...

  10. Linux CentOS中使用SQL*Plus启动和关闭数据库

    启动和关闭数据库的常用工具有三个 一.SQL*Plus 在SQL*Plus环境中,用户以SYSDBA身份连接到Oracle后,可以通过命令行方式启动或关闭数据库. 二.OEM(企业管理器) 利用OEM ...