UDID与OpenUDID的区别联系
最近看友盟的SDK更新日志:(设备系统的正常升级不会改变OpenUDID)
Apple公司于2013年5月1日开始,拒绝采集UDID的App上架App Store。 为适应Apple公司的这一政策,2013年4月23日之后,友盟统计分析iOS平台的SDK只提供OpenUDID版本。 OpenUDID版本SDK使用OpenUDID为统计标准,兼有mac地址的统计。同时,我们已经上线服务器端解决方案,避免大家在将SDK从UDID版本切换到OpenUDID版本时统计数据受到影响。
提到了UDID和OpenUDID,那么这两个有什么区别呢?
最近iOS7开始禁掉了UDID,不允许APP随便获取玩家的UDID信息,防止用作非法用途,如广告商广告分析,黑客盗用信用卡.
UDID与OpenUDID的不同之处
- 每台iOS设备的UDID是唯一且永远不会改变;
- 每台iOS设备的OpenUDID是通过第一个带有OpenUDID SDK包的App生成,如果你完全删除全部带有OpenUDID SDK包的App(比如恢复系统等),那么OpenUDID会重新生成,而且和之前的值会不同,相当于新设备;
是否足够替代
- 普通的iOS设备用户不会没事就去恢复系统或者抹掉系统,所以一般OpenUDID的值是不会改变的;
- 在iOS系统升级换代时,会产生较大的影响,毕竟95%以上的iOS设备用户都会选择升级到最新的系统;
是否足够替代就看你对UDID的需求是什么了,如果要求怎么都不能变,那OpenUDID可能还是不能满足你的需求!
如下是一位网友的
关于OpenUDID的测试分析(含Demo)
原文地址:http://blog.csdn.net/wwmusic/article/details/8929611
早前研究OpenUDID,最近整理资料,故贴出关于OpenUDID的测试分析结果
1、OpenUDID的测试结果
1)同一台设备下(黑色iPhone4)
a、 Demo1OfOpenUDID测试结果
无线局域网下:
137891ec369c899b01cc3df6cad90360514827e7
GPRS下:
137891ec369c899b01cc3df6cad90360514827e7
飞行模式下:
137891ec369c899b01cc3df6cad90360514827e7
b、安装第二个Demo2OfOpenUDID测试结果【Demo1存在未删除】
无线局域网下:
137891ec369c899b01cc3df6cad90360514827e7
GPRS下:
137891ec369c899b01cc3df6cad90360514827e7
飞行模式下:
137891ec369c899b01cc3df6cad90360514827e7
c、Demo1存在,删除Demo2应用并重装后:
137891ec369c899b01cc3df6cad90360514827e7
d、 将使用了LXF_OpenUDID方案的应用全部删除【关机重启iPhone,Xcode彻底清除并重启】重装Demo2
da0fd9abf16b6c8dade7e5228a6761b8adfc958b
2)不同设备下
a、 黑色iPhone4:
3be23eac6a6fc0721c184a0acfd5d54af4431bb7
b、 白色iphone4
b6d314050e29bf9dd12574320bec8f03354d8547
c、 黑色iPhone4S
965e60bd2a95e3c350066f56a44420d40822df96
(以已有的三部设备分别交替重复测试)
2、OpenUDID测试结果分析
1)优点:
a、没有用到MAC地址。MAC地址跟UDID一样,存在隐私问题。不能保证以后不会禁用MAC地址。
b、不同设备能够获取各自唯一的识别码,保证了唯一性,可以用于以往UDID的相关用途。
c、从代码分析OpenUDID的获取,识别码获取方便并且保存谨慎
OpenUDID生成唯一识别码的代码:
- unsigned char result[16];
- const charchar *cStr = [[[NSProcessInfo processInfo] globallyUniqueString] UTF8String];
- CC_MD5( cStr, strlen(cStr), result );
- _openUDID = [NSString stringWithFormat:
- @"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%08x",
- result[0], result[1], result[2], result[3],
- result[4], result[5], result[6], result[7],
- result[8], result[9], result[10], result[11],
- result[12], result[13], result[14], result[15],
- arc4random() % 4294967295];
当设备装上第一个使用OpenUDID方案的应用程序第一次调试时,会生成一个唯一识别码,追加8为随机数保持了40位的UDID,并且利用了NSUserDefaults类将识别码进行了保存。
但是当应用删除,UserDefaults同样会被清空,为了避免重新生成唯一识别码,该方案还使用到了UIPasteboard类(设备剪切板),将识别码同时保存到了UIPasteboard中。
- UIPasteboard* slotPB = [UIPasteboard pasteboardWithName:availableSlotPBid create:YES];
- [LXF_OpenUDID _setDict:localDict forPasteboard:slotPB];
d、当设备上安装第二个使用了OpenUDID方案的应用程序,将会从UIPasteboard中获取唯一识别码,这里取到的就是之前第一个应用保存到UIPasteboard中的。【前提:设备上有一个使用了OpenUDID的应用存在】
2)缺点
a、当将设备上所有使用了OpenUDID方案的应用程序删除,且设备关机重启,xcode彻底清除并重启,重装应用程序去获取OpenUDID,此时OpenUDID变化,与之前不一样了,从测试结果可看出。
b、由缺点1分析,所有OpenUDID应用卸载后,由UIPasteboard保存的数据即被清除,重装故会重新获取新的OpenUDID。
那么当因为用户干预或者恶意程序,致使UIPasteboard数据清除,从而导致OpenUDID被删除,重装也会获取新的OpenUDID。
UDID与OpenUDID的区别联系相关推荐
- OpenUDID 是否足够替代 UDID 使用?有何不同?
最近iOS7开始禁掉了UDID,我也在寻找替代方案,这里说下我知道的信息! UDID与OpenUDID的不同之处 每台iOS设备的UDID是唯一且永远不会改变: 每台iOS设备的OpenUDID是通过 ...
- android设备uuid、udid
前言 udid: UDID是Unique Device Identifier的缩写,中文意思是设备唯一标识. uuid: UUID是Universally Unique Identifier的缩写,中 ...
- MacBook Air 使用技巧
1.Finder 相当于资源管理器 Launchpad 相当于桌面 Safari 浏览器 2.快捷键 * cmd+shift+3: 捕获整 ...
- iOS设备唯一标识(可以用版)
由于UDID和OpenUDID被禁用,系统自带的的识别唯一标识有两种 广告标示符(IDFA-identifierForIdentifier) 这是iOS 6中另外一个新的方法,advertisingI ...
- pig对null的处理(实际,对空文本处理为两种取值null或‘’)
pig对文本null的处理很特殊.会处理成两种null,还会处理成''这种空值. 比如,读name,age,sex日志信息.name取值处理,如果记录为",,,"这样,会将name ...
- pig中查询top k,返回每个hour和ad_network_id下最大两个记录(SUBSTRING,order,COUNT_STAR,limit)
pig里面是有TOP函数,不知道为什么用不了.有时间要去看看pig源码了. SET job.name 'top_k'; SET job.priority HIGH; --REGISTER piggyb ...
- pig强制转换(字符到整数):首位0怎么处理,‘01’到1的转化,
pig支持的类型转换(cast) Pig Latin supports casts as shown in this table. from / to bag tuple map int long f ...
- iOS 稳定性问题治理:卡死崩溃监控原理及最佳实践
不同于 Android 系统中的卡死(ANR)问题,目前业界对 iOS 系统中 App 发生的卡死崩溃问题并无成熟的解决方案,主要原因是: 通常 App 卡死时间超过 20s 之后会触发操作系统的保护 ...
- iOS各种设备识别码IDFA、UDID、UUID、MAC、OpenUDID、IDFV
今天在app服务端接口文档中看到2个接口名称,是和idfa相关的,就搜索了解了一下,顺便梳理了ios各种设备识别码. *IDFA英文全称Identifier+for+Advertising,即广告标示 ...
最新文章
- 电脑字体在哪个文件夹_电脑键盘使用方法
- 谷歌、阿里们的杀手锏:3大领域,10大深度学习CTR模型演化图谱(附论文)
- #if DEBUG与条件(“ DEBUG”)
- Keil错误Unable to automatically place AT section malloc.o(.ARM.__AT_0x20000000) with required base add
- 通过 WIFI 用 adb 调试 Android 设备
- 2017.10.26 四校联测D1
- 小米这个系列绝了!7款之后再添新机,完全分不清
- python操作sql_Python Mysql数据库操作,sql文件操作
- C++模板函数/类示例
- postgresql 加载参数文件
- R语言︱情感分析—词典型代码实践(最基础)(一)
- oracle 弱口令扫描器,批量扫描弱口令检查工具
- MODULE_AUTHOR 功能
- 单臂路由之2,多网口软路由实现单臂路由功能,且其剩余网口及光猫剩余网口均实现上网功能
- 机器学习——概率图模型
- OpenCloudOS开源操作系统社区迎来首个正式版本
- onvif wsdl2java
- Vue.js 文件上传限制类型上传与限制选择的文件类型
- 【计算机组成】计算机组成原理大纲含思维导图
- findbugs 常见问题 及解决方案(转)
热门文章
- PS笔刷:太空星云特效
- ffmpeg编码报错:more samples than frame size (avcodec_encode_audio2)
- java怎么延时_java怎么实现延时
- [渝粤教育] 中国地质大学 管理学原理 复习题
- 淘宝npm镜像源换新地址
- 安装telnet 后,root登录时总是提示 login incorrect
- 页面效果简单做(一)
- Java的时代依然还在,合格的Java工程师成为紧缺人才
- Makefile详解
- 玩游戏并支付游戏币_您会为免费游戏支付什么?