UDID 和 UUID 之间的区别 [重复]
Posted
技术标签:
【中文标题】UDID 和 UUID 之间的区别 [重复]【英文标题】:Differences between UDID and UUID [duplicate] 【发布时间】:2014-02-19 05:54:25 【问题描述】:有人说 UDID (Unique Device IDentifier)
有人说 UUID (Universally Unique IDentifier)
。它们是否相同?它们之间有什么区别?
【问题讨论】:
是否修改了重复的问题?重复的问题没有提出任何相关的问题,它声称拥有的答案被掩埋并添加为标有“(*)”的事后思考。是否可以删除重复的标签?这浪费了我 5 分钟的时间...... 【参考方案1】:UUID(通用唯一标识符)基于每个应用。标识设备上的应用程序。只要用户没有完全删除应用程序,那么这个标识符就会在应用程序启动之间持续存在,并且至少可以让您识别使用设备上特定应用程序的同一用户。不幸的是,如果用户完全删除然后重新安装应用程序,那么 ID 将会改变。
UDID(唯一设备标识符) 唯一标识 ios 设备的 40 个十六进制字符序列。此值可以通过 iTunes 检索,或使用 UIDevice -uniqueIdentifier 找到。源自 MAC 地址等硬件详细信息。
【讨论】:
如何获取 UUID?以及 UUID 中有多少个字符以及它基本使用的位置 UUID 是 128 位字符,UUID 用 32 位小写十六进制数字表示。您可以通过参考此 SO Post ***.com/questions/14352418/… 来获取 UUID @Rugmangathan : 如何以编程方式获取 UDID? @JayprakashDubey,不,您不能再获得 UDID,而是可以使用identifierForVendor()
。有关更多信息,请关注此 SO 帖子 ***.com/a/31652454/2849567
UUID 不是基于每个应用程序,它是用于创建“唯一”ID 的标准。 identifierForVendor() 是你指的,它返回一个UUID,但advertisingIdentifier 也是一个UUID。【参考方案2】:
你最好通过这个- http://nshipster.com/uuid-udid-unique-identifier/
UUID(通用唯一标识符):由RFC 4122定义的可保证跨时空唯一性的128位序列。
UDID(唯一设备标识符):由 40 个十六进制字符组成的序列,用于唯一标识 iOS 设备(设备的社会安全号码,如果您愿意的话)。该值可以通过 iTunes 检索,或使用 UIDevice -uniqueIdentifier 找到。源自 MAC 地址等硬件详细信息。
【讨论】:
【参考方案3】:Apple 显然开始在 iOS5 中删除对 UDID(唯一设备标识符)的访问权限。无论如何,您现在可以为识别目的做的最好的事情就是使用 UUID(通用唯一标识符)。这必须基于每个应用程序。也就是说,无法再识别设备,但您可以识别设备上的应用程序。只要用户没有完全删除应用程序,那么这个标识符就会在应用程序启动之间持续存在,并且至少可以让您识别使用设备上特定应用程序的同一用户。不幸的是,如果用户完全删除然后重新安装应用程序,那么 ID 将会改变,但这是任何人都可以做的最好的事情。
【讨论】:
【参考方案4】:从 iOS 5 开始,Apple 已弃用 UIDevice uniqueIdentifier ,这意味着获取每个 iOS 设备的唯一 id 的传统方式现在无法使用,即。
[[UIDevice currentDevice] uniqueIdentifier]
在 iOS 5 及更高版本中失败。
因此,对于 UUID 的替代方案,我们可以使用 Apple 的 CFUUID 类来为设备创建唯一 id。但是,我们真的需要记住,这个内置类将创建随机数,因此它们将在每次调用时返回不同的 id。不要使用 NSUserDefaults 来存储它,最好的方法是使用 Keychain。
因此,我在这里为您提供使用它的最佳方式,以便将其用作您设备的唯一密钥。
- (NSString *)createNewUUID
CFUUIDRef theUUID = CFUUIDCreate(NULL);
CFStringRef string = CFUUIDCreateString(NULL, theUUID);
CFRelease(theUUID);
return [(NSString *)string autorelease];
UDID:
http://whatsmyudid.com/
【讨论】:
作为一个小提示,您附加的图片标记为“获取 UUID;”但是,它实际上是在获取 UDID。我并不期待修复,只是想记下它,以便其他读者知道。 你需要了解 UUID 不是 UDID。 上图不正确,显示的是UDID,而不是UUID。 UDID 是每个设备的唯一字符串 ([[UIDevice currentDevice] uniqueIdentifier]
)。 UUID 是随机数,每次创建时都会给你一个随机字符串 (CFUUIDRef theUUID = CFUUIDCreate(NULL);
)。
图片是正确的,作者的红色注释是错误的。【参考方案5】:
UDID,即Unique Device Identifier,应用在iTunes中,管理你苹果开发证书中的设备。可以通过以下代码在iOS5 SDK中获得:
[UIDevice currentDevice] uniqueIdentifier];
定义为:
@property(nonatomic,readonly,retain) NSString *uniqueIdentifier __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_NA,__MAC_NA,__IPHONE_2_0,__IPHONE_5_0); // a string unique to each device based on various hardware info.
UUID,即通用唯一标识符,一种用于软件构造的标识符标准,由开放软件基金会 (OSF) 标准化,作为分布式计算环境 (DCE) 的一部分 (wiki)。
您可以通过以下代码获取UUID:
-(NSString*) uuid
CFUUIDRef puuid = CFUUIDCreate( nil );
CFStringRef uuidString = CFUUIDCreateString( nil, puuid );
NSString * result = (NSString *)CFStringCreateCopy( NULL, uuidString);
CFRelease(puuid);
CFRelease(uuidString);
return [result autorelease];
但是,在 iOS7 设备中,上述方法会为不同的设备返回相同的值。
有很多方法可以在link中获取唯一标识符
【讨论】:
以上是关于UDID 和 UUID 之间的区别 [重复]的主要内容,如果未能解决你的问题,请参考以下文章