最近看友盟的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生成唯一识别码的代码:

[objc]  view plain copy
  1. unsigned char result[16];
  2. const charchar *cStr = [[[NSProcessInfo processInfo] globallyUniqueString] UTF8String];
  3. CC_MD5( cStr, strlen(cStr), result );
  4. _openUDID = [NSString stringWithFormat:
  5. @"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%08x",
  6. result[0], result[1], result[2], result[3],
  7. result[4], result[5], result[6], result[7],
  8. result[8], result[9], result[10], result[11],
  9. result[12], result[13], result[14], result[15],
  10. arc4random() % 4294967295];

当设备装上第一个使用OpenUDID方案的应用程序第一次调试时,会生成一个唯一识别码,追加8为随机数保持了40位的UDID,并且利用了NSUserDefaults类将识别码进行了保存。

但是当应用删除,UserDefaults同样会被清空,为了避免重新生成唯一识别码,该方案还使用到了UIPasteboard类(设备剪切板),将识别码同时保存到了UIPasteboard中。

[objc]  view plain copy
  1. UIPasteboard* slotPB = [UIPasteboard pasteboardWithName:availableSlotPBid create:YES];
  2. [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的区别联系相关推荐

  1. OpenUDID 是否足够替代 UDID 使用?有何不同?

    最近iOS7开始禁掉了UDID,我也在寻找替代方案,这里说下我知道的信息! UDID与OpenUDID的不同之处 每台iOS设备的UDID是唯一且永远不会改变: 每台iOS设备的OpenUDID是通过 ...

  2. android设备uuid、udid

    前言 udid: UDID是Unique Device Identifier的缩写,中文意思是设备唯一标识. uuid: UUID是Universally Unique Identifier的缩写,中 ...

  3. MacBook Air 使用技巧

    1.Finder             相当于资源管理器 Launchpad       相当于桌面 Safari              浏览器 2.快捷键 * cmd+shift+3: 捕获整 ...

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

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

  5. pig对null的处理(实际,对空文本处理为两种取值null或‘’)

    pig对文本null的处理很特殊.会处理成两种null,还会处理成''这种空值. 比如,读name,age,sex日志信息.name取值处理,如果记录为",,,"这样,会将name ...

  6. 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 ...

  7. pig强制转换(字符到整数):首位0怎么处理,‘01’到1的转化,

    pig支持的类型转换(cast) Pig Latin supports casts as shown in this table. from / to bag tuple map int long f ...

  8. iOS 稳定性问题治理:卡死崩溃监控原理及最佳实践

    不同于 Android 系统中的卡死(ANR)问题,目前业界对 iOS 系统中 App 发生的卡死崩溃问题并无成熟的解决方案,主要原因是: 通常 App 卡死时间超过 20s 之后会触发操作系统的保护 ...

  9. iOS各种设备识别码IDFA、UDID、UUID、MAC、OpenUDID、IDFV

    今天在app服务端接口文档中看到2个接口名称,是和idfa相关的,就搜索了解了一下,顺便梳理了ios各种设备识别码. *IDFA英文全称Identifier+for+Advertising,即广告标示 ...

最新文章

  1. 电脑字体在哪个文件夹_电脑键盘使用方法
  2. 谷歌、阿里们的杀手锏:3大领域,10大深度学习CTR模型演化图谱(附论文)
  3. #if DEBUG与条件(“ DEBUG”)
  4. Keil错误Unable to automatically place AT section malloc.o(.ARM.__AT_0x20000000) with required base add
  5. 通过 WIFI 用 adb 调试 Android 设备
  6. 2017.10.26 四校联测D1
  7. 小米这个系列绝了!7款之后再添新机,完全分不清
  8. python操作sql_Python Mysql数据库操作,sql文件操作
  9. C++模板函数/类示例
  10. postgresql 加载参数文件
  11. R语言︱情感分析—词典型代码实践(最基础)(一)
  12. oracle 弱口令扫描器,批量扫描弱口令检查工具
  13. MODULE_AUTHOR 功能
  14. 单臂路由之2,多网口软路由实现单臂路由功能,且其剩余网口及光猫剩余网口均实现上网功能
  15. 机器学习——概率图模型
  16. OpenCloudOS开源操作系统社区迎来首个正式版本
  17. onvif wsdl2java
  18. Vue.js 文件上传限制类型上传与限制选择的文件类型
  19. 【计算机组成】计算机组成原理大纲含思维导图
  20. findbugs 常见问题 及解决方案(转)

热门文章

  1. PS笔刷:太空星云特效
  2. ffmpeg编码报错:more samples than frame size (avcodec_encode_audio2)
  3. java怎么延时_java怎么实现延时
  4. [渝粤教育] 中国地质大学 管理学原理 复习题
  5. 淘宝npm镜像源换新地址
  6. 安装telnet 后,root登录时总是提示 login incorrect
  7. 页面效果简单做(一)
  8. Java的时代依然还在,合格的Java工程师成为紧缺人才
  9. Makefile详解
  10. 玩游戏并支付游戏币_您会为免费游戏支付什么?