关于IOS的唯一标识总结
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的唯一标识总结的更多相关文章
- [转]iOS设备唯一标识探讨
转自:http://www.jianshu.com/p/b83b0240bd0e iOS设备唯一标识探讨 为了统计和检测应用的使用数据,几乎每家公司都有获取唯一标识的业务需求,在iOS5以前获取唯一标 ...
- 获取iOS设备唯一标识
[获取iOS设备唯一标识] 1.已禁用-[UIDevice uniqueIdentifier] 苹果总是把用户的隐私看的很重要.-[UIDevice uniqueIdentifier]在iOS5实际在 ...
- iOS设备唯一标识的前世今生
设备唯一标识 估计很多开发都有被要求过获取一下设备的唯一标识,获取设备的唯一标识经常使用在我们做统计或者是在保证一台设备登录亦或者是做IM的时候可能会考虑去使用它,这一次在自己的需求当中就有一个&qu ...
- ios设备唯一标识获取策略
In iOS 7 and later, if you ask for the MAC address of an iOS device, the system returns the value 02 ...
- iOS设备唯一标识(可以用版)
由于UDID和OpenUDID被禁用,系统自带的的识别唯一标识有两种 广告标示符(IDFA-identifierForIdentifier) 这是iOS 6中另外一个新的方法,advertisingI ...
- 获得iOS设备唯一标识
使用-[UIDevice identifierForVendor]或是-[ASIdentifierManager advertisingIdentifier]来作为你框架和应用的唯一标示符.坦白的来说 ...
- iOS获取设备唯一标识的8种方法
8种iOS获取设备唯一标识的方法,希望对大家有用. UDID UDID(Unique Device Identifier),iOS 设备的唯一识别码,是一个40位十六进制序列(越狱的设备通过某些工具可 ...
- ios开发——实用技术篇OC篇&获取设备唯一标识
获取设备唯一标识 WWDC 2013已经闭幕,IOS7 Beta随即发布,界面之难看无以言表...,简直就是山寨Android. 更让IOS程序猿悲催的是,设备唯一标识的MAC Address在IOS ...
- IOS 生成设备唯一标识
前言 iOS设备5.0以上放弃使用[[UIDevice currentDevice] uniqueIdentifier]来获得设备唯一ID iOS设备私有方法禁止用户获取和使用IMEI 需求 需要一个 ...
随机推荐
- WCF service 获取 client 端的 IP 和 port (转)
转帖记录一下,以便日后使用. 主要使用是.NET3.5里的服务端上下文的消息实例的RemoteEndpointMessageProperty属性,获取客户端地址信息.但是限制 的绑定是HTTP.TCP ...
- C#中的日期处理函数
C#中的日期处理函数 //2013年4月24日 this.TextBox6.Text = System.DateTime.Now.ToString("D"); //2013-4-2 ...
- 调整 ANTD 组件菜单的字体大小。
调整 ANTD 组件菜单的字体大小:经过多次试验,原有字体太小,只有12px,通过下列CSS 强制加大. 1.分组子菜单(标题) .ant-menu-inline > .ant-menu-sub ...
- jsp 以及javabean内省技术
l JSP l JavaBean及内省 l EL表达式 1.1 上次课内容回顾 会话技术: Cookie:客户端技术.将数据保存在客户端浏览器上.Cookie是有大小和个数的限制. Session:服 ...
- 我常用的crontab命令
命令简介 crontab-操作每个用户的守护程序和该执行的时间表.部分参数说明crontab file [-u user]-用指定的文件替代目前的crontab.crontab-[-u user]-用 ...
- 创建GitHub博客
1. 创建GitHub账号 GitHub技术博客首先需要GitHub账户,请在官网按照步骤自行注册账号. 2. 创建博客仓库 使用注册的账户登录,然后点击创建仓库,输入项目信息如下所示,注意项目名称规 ...
- SQLLocalDB 11.0持续报错,这是泥马德什么问题啊!!!
Windows API 调用 WaitForMultipleObjects 返回了错误代码: 575.Windows 系统错误消息为: {应用程序错误}应用程序无法正常启动(0x%lx).请单击“确定 ...
- Entity framwork的数据库分页
网上查了很多,原以为多么复杂的事情,其实很简单: list = list.OrderBy(orderBy, ascending).Skip((pageIndex - 1) * pageSize).Ta ...
- vbox中虚拟ubuntu增加新的虚拟硬盘
vbox中虚拟ubuntu增加新的虚拟硬盘 在virtualbox中装好Ubuntu后,发现硬盘空间不够使用 了.以下是搜集整理的解决办法: 1. 添加新硬盘 设置 -> ...
- JS面试题-算法台阶问题
有100格台阶,可以跨1步可以跨2步,那么一个有多少种走法: 今天电话面试.遇到一道算法问题,然后瞬间一脸懵逼: 然后机智的我,自作聪明的想到如果一个人每次都走1步,那么最多步,每次走2步最少步:然后 ...