转自: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
|
√
|
√
|
√
|
×
|
√
|
×
|
?√
|
?×
|
注:
优缺点
|
优点
|
缺点
|
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开发文档
相关推荐
通过pc电脑,如何利用各种软件,获取iOS设备的UDID号
NULL 博文链接:https://zhangmingwei.iteye.com/blog/2090563
通过这个小程序,可以获取到当前设备的UDID信息,用于广告等业务
iOS 设备唯一标示符(UDID)解决方案 ZKUDIDManager ,ZKUDIDManager是一个开源的基于Keychain和IDFV的iOS设备唯一标示符(UDID...
获取iOS设备的UDID,方便测试,不用上传到app store也可以安装
本Demo内包含 Java端、PHP端,以及 iOS本地搭建服务器,安装 描述文件获取手机唯一UDID 以及回调的方法
全能签软件源UDID验证+远程公告+远程时间锁+锁库名+远程控制 移动开发 - IOS一、锁定动态库名称、防止二次修改动态库名称,二次修改动态库名称闪退二、软件源远程控制功能:1、软件源后台开启关闭 动态库UDID网络...
IOS UDID 解决方案by 卖火柴的一点阳光
使用libMobileGestalt.dylib库获取UDID、IMEI等信息,iOS7及以上需要越狱。
获取设备的udid,不用上架app store 也可以安装到手机上
主要是通过udid.config获取udid,然后通过fastlane链接苹果账号添加udid,更改描述文件,然后下载达到重签的目的
这是为了实现iOS获取手机唯一标示实现的工具类,只需下载添加至项目中调用getUUID即可
这使用相应平台的格式为iOS和Android提供了UDID。 平台格式iOS 7946DA4E-8429-423C-B405-B3FC77914E3E Android 8af8770a27cfd182要在两个平台上获得一致的格式,请使用:import'package:package:flutter_udid / ...
获取iOS-UDID iPhone和iPad的UDID无法再使用应用程序检索。 相反,我们可以使用网页和PHP安装配置文件。 结果将通过电子邮件发送给您。 您需要对文件进行编辑以插入您的Web域名。 进行以下编辑: enroll....
IOS获取UDID的替代方案,openUDID源码。
UDID.io 使用示例 著名的使用移动配置获取 iPhone 和 iPad 的 UDID、IMEI、序列号等。 此存储库包含示例应用程序,它使用“第三方 API”将 UDID.io 用作您网站或移动应用程序的一部分。 API 描述和规范 API 使用 ...
ProPLUG OpenUDID - iOS Unique Identifier Replacement UDID.rar
UDID 解决方案 SecureUDID ,SecureUDID 是一个开源的基于沙箱机制的 UDID 解决方案,旨在解决苹果因为废弃了 UDI...
1.通过蒲公英网站快速获取ios设备udid 2.登录苹果开发者社区 绑定测试iPhone/ipad 的udid 3.创建Identifiers标识符 4. 登录Appuploader申请iOS证书文件p12 5.创建与下载profile文件 6.打包ipa 7. Ipa 上传到...
UDID自主签名源码.zip admin CSS font images img includes install js plist static tcjs tj .DS_ Store 1receive.php 1udid.mobileconfig 404.html config.php cxreceive.php cxudid.mobileconfig gengxin.php ...