关于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 需求 需要一个 ...
随机推荐
- CentOS7 屏幕亮度的命令行管理
1.安装:yum install xgamma 设置亮度:xgamma -gamma n( 0.1 < n < 10.0 ,可以根据自己的喜好设置 2.shell 系统调节亮度调用的是/s ...
- LeetCode 414 Third Maximum Number
Problem: Given a non-empty array of integers, return the third maximum number in this array. If it d ...
- jq表头固定
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <meta na ...
- javascript判断给定字符串是否是回文
//判断给定字符串是否是回文 function isPalindrome(word) { var s = new Stack(); for (var i = 0 ...
- LeetCode之171. Excel Sheet Column Number
---------------------------------- 乘权相加即可. AC代码:(从右往左) public class Solution { public int titleToNum ...
- sql面试题一 学生成绩
sql面试题一 学生成绩 原帖链接:http://topic.csdn.net/u/20081020/15/1ABF54D0-F401-42AB-A75E-DF90027CEBA0.html 表架 ...
- 【Android】命令行jarsigner签字和解决找不到证书链错误
1.签名失败 $jarsigner -verbose -keystore /Volumes/Study/resourcesLib/Qunero-achivements/AndroidApp/QuLor ...
- SqlServer性能检测和优化工具使用详细(转)
转载链接:http://www.cnblogs.com/knowledgesea/p/3683505.html 工具概要 如果你的数据库应用系统中,存在有大量表,视图,索引,触发器,函数,存储过程,s ...
- Power BI for Office 365(一)移动端应用
此篇来自于微软商业智能网站的官方博客团队发布的Power BI在线资料其中的一部分,完整版地址: http://office.microsoft.com/en-us/office365-sharepo ...
- 【Cocos2d-x for WP8 学习整理】(2)Cocos2d-Html5 游戏 《Fruit Attack》 WP8移植版 开源
这一阵花了些时间,把 cocos2d-html5 里的sample 游戏<Fruit Attack>给移植到了WP8上来,目前已经实现了基本的功能,但是还有几个已知的bug,比如WP8只支 ...