UDID和UUID的区别

有人说UDID (Unique Device IDentifier) ,有人说UUID (Universally Unique IDentifier) 。 他们是否相同? 他们之间有什么区别?

UUID(通用唯一标识符)基于每个应用程序。 识别设备上的应用程序。 只要用户没有完全删除应用程序,那么这个标识符将在应用程序启动之间持续存在,并且至less让您识别使用设备上特定应用程序的同一用户。 不幸的是,如果用户完全删除,然后重新安装应用程序,那么ID将会改变。

UDID(唯一设备标识符)唯一标识ios设备的40个hex字符序列。 这个值可以通过iTunes检索,或者使用UIDevice -uniqueIdentifierfind。 从硬件细节,如MAC地址派生。

你最好通过这个 – http://nshipster.com/uuid-udid-unique-identifier/

UUID (通用唯一标识符):由RFC 4122定义的128位的序列,可以保证空间和时间的唯一性。

UDID (唯一设备标识符):一个由40个hex字符组成的序列,用于唯一标识iOS设备(设备的社会安全号码,如果您愿意的话)。 这个值可以通过iTunes检索,或者使用UIDevice -uniqueIdentifierfind。 从硬件细节,如MAC地址派生。

苹果显然已经开始删除iOS5中的UDID(唯一设备标识符)的访问权限。 无论如何,你现在可以做的最好的事情就是使用一个UUID(通用唯一标识符)。 这必须基于每个应用程序。 也就是说,无法再识别设备,但是您可以在设备上识别应用程序。 只要用户没有完全删除应用程序,那么这个标识符将在应用程序启动之间持续存在,并且至less让您识别使用设备上特定应用程序的同一用户。 不幸的是,如果用户完全删除,然后重新安装应用程序,那么ID会改变,但这是任何人都可以做的最好的。

从iOS 5开始,苹果已经弃用了UIDevice uniqueIdentifier,这意味着获取每个iOS设备的唯一ID的传统方式现在将不起作用。 [[UIDevice currentDevice] uniqueIdentifier]从iOS 5以上失败。

因此,为了替代UUID,我们可以使用Apple的CFUUID类来为设备创build唯一的ID。 但是,我们真的需要记住,这个build立的类将创build随机数,所以他们会在每次调用时返回不同的ID。 不要使用NSUserDefaults来存储它,最好的方法就是使用Keychain。

所以,在这里我给你最好的使用它的方式,以便用它作为你设备的唯一键。

 - (NSString *)createNewUUID { CFUUIDRef theUUID = CFUUIDCreate(NULL); CFStringRef string = CFUUIDCreateString(NULL, theUUID); CFRelease(theUUID); return [(NSString *)string autorelease]; } 

你做了:

http://whatsmyudid.com/

在这里输入图像说明

UDID是在iTunes中应用的唯一设备标识符,用于pipe理您的Apple开发证书中的设备。 可以通过以下代码在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 )的一部分标准化的软件构build中使用的标识符标准。

您可以通过以下代码获取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设备中,以上方法将为差异设备返回相同的值。

有很多方法来获取链接中的唯一标识符