关于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 需求 需要一个 ...
随机推荐
- qt 标准对话框
if (QMessageBox::Yes == QMessageBox::question(this, tr("Question"), ...
- xml 基础学习备忘
<?xml version="1.0" encoding="UTF-8"? standalone="yes"> 这里的encod ...
- Mac安装软件报“打不开。。。,因为它来自身份不明的开发者”的解决办法
问题描述 在Mac上安装git,双击pkg进行安装,报如下图错误: 解决办法 不要双击pkg文件,改成选中文件之后,鼠标右键,选择“打开方式->安装器(默认)”,即可继续安装.
- 图像缩放_OpenCv
图像缩放是一种比较简单的图像处理操作,这里给出opencv中的代码, opencv的版本C语言接口 int resize_c() { const char *pstrImageName = " ...
- Js中最常见的异常捕捉 TryCatch
今天检查网页的时候因为一段Js报错 导致下面的js没有执行(一个js动态添加的弹窗没有出现) 原因是因为 一个属性本身是undefined 找不到 无法给他赋值 这里的原因很简单 也已经修改好了但是这 ...
- BZOJ 2115 [Wc2011] Xor ——线性基
[题目分析] 显然,一个路径走过两边是不需要计算的,所以我么找到一条1-n的路径,然后向该异或值不断异或简单环即可. 但是找出所有简单环是相当复杂的,我们只需要dfs一遍,找出所有的环路即可,因为所有 ...
- java抽象类实践
package javaClassStudy; /** * * @author yuxg * 抽象类实践 */ public abstract class Person { private Strin ...
- Linux之head、tail、grep、cut等命令详解
http://jingyan.baidu.com/article/5225f26b6ab230e6fa0908be.html
- Python爬虫学习(4): python中re模块中的向后引用以及零宽断言
使用小括号的时候,还有很多特定用途的语法.下面列出了最常用的一些: 表4.常用分组语法 分类 代码/语法 说明 捕获 (exp) 匹配exp,并捕获文本到自动命名的组里 (?<name>e ...
- iOS 遍历AutoLayout约束
//遍历footerview约束(一般高,宽) NSArray* constrains = self.footerView.constraints; for (NSLayoutConstraint* ...