`

iOS平台UDID方案比较

 
阅读更多

转自:http://www.cocoachina.com/bbs/read.php?tid=144524

 

 

苹果在iOS6中禁用了[UIDevice uniqueIdentifier],在iOS7中又把mac地址的获取给堵上了。没办法,毕竟人家是老大,说不让你用,你也没办法。
在这边总结一下现有的一部分UDID获取方法(有苹果推荐的,也有第三方的),目的在于抛砖,没有切实的说明哪种方法好用。用哪种方法,完全由大家自己根据需要来决定。

iOS2~iOS7目前已有的技术方案

方案 提供方 实现方法 用途及使用情况
传统UDID 苹果API UIDevice的实例方法uniqueIdentifier直接可获取  获取设备的唯一识别码
 在iOS5及之前的版本中,基本上使用该方法来获取UDID。
MAC+MD5 UNIX系统调用 使用UNIX API获取设备的MAC地址,再使用MD5加密算法生成一个字符串  由于苹果在iOS6后停用了UDID方案,所以大部分应用都开始使用这种方案来生成设备的唯一识别码
CFUUID/NSUUID 苹果API 通过唯一标识设备的一个值(通常是以太网硬件地址)和一个时间值来生成一个唯一标识串 ● 苹果建议基于CFUUID来生成一个UDID,然后将其存在程序中使用
IDFV 苹果API UIDevice的实例方法identifierForVendor ● 用于标识供应商
ADID 苹果API ASIdentifierManager的实例方法advertisingIdentifier  用于广告服务
OpenUDID 第三方开源代码 CFUUID为基础生成一个串,并同时存储于系统剪切板和程序的沙盒(NSUserDefault)中,应用程序从这两个地方之一获取UDID  在苹果宣布禁用传统UDID方案后,这是目前使用较为广泛的开源方案,包括友盟在内的很多开发商都使用这一方案。
SecureUDID 第三方开源代码 CFUUID为基础生成一个串,并同时存储于程序剪切板中,程序可以从该剪切板中获取UDID 在苹果宣布禁用传统UDID方案后,部分应用也采用了该方案(目前github上数据显示该方案下载量仅次于OpenUDID,具体使用情况未知)




系统支持情况
苹果在iOS6以后,已禁用了UIDevice的uniqueIdentifier方法,所以传统的UDID方法在iOS6以后已不能使用;而从iOS7开始,获取MAC地址的方法统一返回02:00:00:00:00:00,所以使用MAC+MD5方法已无意义。
                                                                                                                              

  





方案
  
  
iOS 2
  
  
iOS 3
  
  
iOS 4
  
  
iOS 5
  
  
iOS 6
  
  
iOS 7
  
  
UDID
  
  
  
  
  
  
  
  
  
  
×
  
  
×
  
  
MAC+MD5
  
  
  
  
  
  
  
  
  
  
  
  
×
  
  
CFUUID
  
  
  
  
  
  
  
  
  
  
  
  
  
  
NSUUID
  
  
×
  
  
×
  
  
×
  
  
×
  
  
  
  
  
  
IDFV
  
  
×
  
  
×
  
  
×
  
  
×
  
  
  
  
  
  
Ad ID
  
  
×
  
  
×
  
  
×
  
  
×
  
  
  
  
  
  
OpenUDID
  
  
?
  
  
  
  
  
  
  
  
  
  
  
  
SecureUDID
  
  
?
  
  
  
  
  
  
  
  
  
  
  



持久化情况
                                                                                                                                                

    
启动程序
  
  
从后台返回
  
  
重置广告标识
  
  
重新安装程序
  
  
系统重启
  
  
系统还原设置
  
  
升级系统
  
  
重装系统
  
  
传统UDID
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
MAC+MD5
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
CFUUID/NSUUID
  
  
×
  
  
×
  
  
×
  
  
×
  
  
×
  
  
×
  
  
×
  
  
×
  
  
IDFV
  
  
  
  
  
  
  
  
×
  
  
  
  
×
  
  
?√
  
  
?×
  
  
ADID
  
  
  
  
  
  
×
  
  
  
  
  
  
×
  
  
?√
  
  
?×
  
  
OpenUDID
  
  
  
  
  
  
  
  
  
  
  
  
×
  
  
?√
  
  
?×
  
  
SecureUDID
  
  
  
  
  
  
  
  
×
  
  
  
  
×
  
  
?√
  
  
?×
  

注:

√表示能够保证UDID的持久化,
×表示该情况下UDID可能会丢失改变,?表示该种情况没有实际验证过,纯属猜测(毕竟升级系统什么的太麻烦)
 


优缺点
                                    

  
 
  
  
优点
  
  
缺点
  
  
CFUUID/NSUUID
  
   
  
  ● 删除程序再安装时,会生成新的UDID
  
  
IDFV
  
  ● 对于运行于同一设备上的同一供应商的所有程序,该值都是相同的。
  
  ● 对于同一设备上不同供应商的程序,该值是不同的
  ● 所谓同一供应商是由CFBundleIdentifier中的反转DNS前两部分来确定,如com.test1和com.test2即认为不是同一供应商
  ● 用户如果删除同一供应商的所有程序,再安装该供应商的程序时,该值会改变。
  ● 该值在程序运行于后台时,或用户在重启系统后第一次解锁设备可能返回nil值。
  
  
ADID
  
  ● 该值由系统持久化
  ● 即使用户限制广告跟踪,也可以使用该值来统计用户数量、安全等方面的操作
  ● 该值对于所有的供应商都是一样的
   
  
  ● 只能用于广告服务的程序访问一个唯一标识
  ● 如果用户还原所有系统设置或还原广告标识符时,可能重置该值。
  ● 该值在程序运行于后台时,或用户在重启系统后第一次解锁设备可能返回nil值。
  
  
OpenUDID
  
   同一台设备上使用OpenUDID的所有程序其获取到的UDID都是相同的
  ● 没有用到取MAC地址等可能被苹果禁用的API
  
  ● 在系统恢复设置或刷机的情况下会丢失
  ● 非苹果原生API
  
  
SecureUDID
  
  ●对于运行于同一设备上的同一供应商的所有程序,该值都是相同的(供应商自己控制)。这样防止因一个程序外泄UDID,而导致设备的UDID外泄
  ● 与硬件设备无关
   
  
  ● 不能确保不同设备上的UDID不同
  ● 用户可以选择阻止SecureUDID收集UDID信息
  ● 如果用户备份A设备系统并将其恢复到B设备,则B设备将得到A设备的UDID
  ● 删除程序并清空剪切板可能会导致丢失
  ● 非苹果原生的API
  


注:优缺点是个人判断,还请各位看官指正


参考文献
● http://www.doubleencore.com/2013/04/unique-identifiers/
● Apple开发文档

分享到:
评论

相关推荐

    ios UDID替换方案--真正可行的。OpenUDID

    总结来说,OpenUDID是iOS设备标识的一个历史性的解决方案,它在UDID被禁用后填补了市场空白。然而,随着Apple对用户隐私保护的加强和新标识符的引入,开发者现在有更多的选择,同时也需要面对更复杂的隐私合规问题。...

    iOS 通过 描述文件获取 UDID

    总的来说,这个示例提供了一个解决方案,允许开发者在iOS 5之后的环境中,通过非官方手段获取UDID并实现数据回传。虽然这种方式在App Store发布的应用中不再适用,但对于企业内部应用或者测试环境,仍然有一定的价值...

    iOS 设备唯一标示符(UDID)解决方案 ZKUDIDManager.zip

    iOS 设备唯一标示符(UDID)解决方案 ZKUDIDManager ,ZKUDIDManager是一个开源的基于Keychain和IDFV的iOS设备唯一标示符(UDID...

    UUID+KeyChain实现iOS唯一标示UDID

    在iOS开发中,由于苹果对用户隐私保护的加强,自iOS 6开始,Apple不再允许开发者直接使用UDID(Unique Device Identifier)来标识设备。UDID是一个设备的全球唯一的序列号,但考虑到用户隐私,苹果引入了新的机制,...

    ProPLUG OpenUDID - iOS Unique Identifier Replacement UDID.rar

    这个压缩包文件“ProPLUG OpenUDID - iOS Unique Identifier Replacement UDID.rar”正是为了提供一种开放源码的解决方案,以替代传统的UDID。 首先,我们需要理解UDID是什么。UDID是一个由苹果分配给每个iOS设备的...

    XweiUDID:IOS UDID 解决方案

    "XweiUDID"是一个针对这种变化的解决方案,它是由“卖火柴的一点阳光”提供的Objective-C实现,旨在为开发者提供一种类似UDID的功能,以适应iOS的新政策。 首先,我们需要理解为什么需要UDID替代方案。UDID在早期...

    IOS获取UDIDdemo支持ios7

    这个"IOS获取UDIDdemo支持ios7"的压缩包文件,很可能是提供了一种解决方案,帮助开发者在iOS 7及更高版本中模拟获取UDID的功能。 UDID在早期被广泛用于各种目的,例如设备注册、统计分析、广告追踪等。然而,由于...

    苹果手机UDID的获取

    UDID(Unique Device Identifier)是苹果设备的一个唯一识别码,用于区分不同的iOS设备。...然而,随着隐私保护意识的增强,开发者应逐渐适应不依赖UDID的解决方案,以适应不断变化的苹果政策和用户需求。

    快速查看UDID

    值得注意的是,自从iOS 7之后,苹果为了加强用户隐私保护,取消了通过官方API直接获取UDID的功能,开发者不再能直接获取UDID,而是转向使用其他替代方案,如使用广告标识符(IDFA)或Vendor ID等。然而,在某些特定...

    swift-UDID的代替UUIDKeychain

    在iOS开发中,UDID(Unique Device Identifier)曾被广泛用于唯一标识设备,但出于用户隐私保护考虑,Apple在后来的版本中禁止了对UDID的直接访问。开发者需要寻找替代方案来实现类似的功能,而UUIDKeychain就是其中...

    BypassUdid-iOS6.1.2

    标题 "BypassUdid-iOS6.1.2" 暗示了这是一个关于绕过iOS设备UDID(Unique Device Identifier)限制的解决方案,特别针对iOS 6.1.2版本。UDID是一个16进制的40位字符串,用于唯一标识每一台iOS设备,曾广泛用于应用...

    BypassUdid-iOS5.1.1(9B206&_41;-Hackl0us.tar.gz

    -Hackl0us.tar.gz" 暗示了一个专门针对 iOS 5.1.1 版本的 UDID(Unique Device Identifier)绕过解决方案。这个压缩包可能是由 Hackl0us 开发或发布的,其目标是帮助用户绕过 iOS 设备的 UDID 验证限制。UDID 是苹果...

    ios上取得设备唯一标志的解决方案

    在iOS平台上,获取设备唯一标识符(Unique Identifier)曾经是一个常见的需求,这通常用于设备注册、数据分析、个性化推送等场景。然而,为了保护用户隐私,Apple对获取设备唯一标识符的途径进行了限制。本篇文章将...

    BypassUdid-iOS4.3.3

    标题 "BypassUdid-iOS4.3.3" 暗示了这是一个关于绕过iOS设备唯一设备标识符(UDID)限制的解决方案,特别针对iOS 4.3.3版本。UDID是一个16进制的字符串,用于识别每一个安装了iOS系统的设备,曾被广泛用于应用开发者...

    ios-iOS-本地应用分发.zip

    在iOS平台上,应用的分发通常通过App Store进行,但有时出于测试、内部分享或特定用户群体的需求,开发者可能需要实现本地应用分发。标题"ios-iOS-本地应用分发.zip"暗示了这个压缩包包含了一个解决方案,使得在没有...

    IOS超级签名+APP超级签名分发系统完美运营版+一键超级签名系统+应用分发系统源码

    总之,"IOS超级签名+APP超级签名分发系统"是一个全面的解决方案,旨在帮助开发者快速、方便地分发内部应用,同时兼顾跨平台的兼容性。通过理解和利用这些知识点,开发者可以构建自己的私有应用商店,提升测试和分发...

    ios-minicap.zip

    “ios-minicap”是一个轻量级且高效的解决方案,旨在为开发者提供实时的屏幕显示数据,从而实现远程调试和分析。这个工具的核心在于它的分帧技术,能够将iOS设备的屏幕内容以帧为单位进行捕捉和传输,确保了视频流的...

    获取ios设备号

    2. UUID(Universally Unique Identifier):在UDID被禁用后,开发者开始转向使用UUID作为替代方案。UUID是每次应用首次运行时生成的一个随机的、全局唯一的标识符。但是,与UDID不同,当用户卸载并重新安装应用时,...

    iOS App Signer Mac

    7. **Cydia Impactor**:类似工具如Cydia Impactor也可以实现类似功能,但iOS App Signer可能是针对Mac用户的独立解决方案。 在提供的文件列表“ios-app-signer-master”中,我们可以推测这是一个开源项目,可能...

    二开IOS超级签名+APP超级签名分发系统完美运营版+一键超级签名系统+应用分发系统源码

    综上所述,这个资源包提供了一整套的iOS应用分发解决方案,包括超级签名的实现和应用分发平台的源代码。开发者或运营者可以利用这套系统快速构建自己的应用分发平台,实现iOS应用的快速部署和分发,同时避免了传统...

Global site tag (gtag.js) - Google Analytics