UDID?UUID?傻傻分不清楚?

iOS上对于需要设备唯一性需求的开发,绕不开的有三个MAC地址UDIDUUDI

MAC地址

MAC(Media Access Control或者Medium Access Control)地址,意译为媒体访问控制,或称为物理地址、硬件地址,用来定义网络设备的位置。

具有唯一性,且始终不变。

iOS下代码获取方式:别做梦了,苹果从iOS7开始就移除了通过代码访问MAC地址的权限。

UDID

UDID(Unique Device Identifier)是一串由40位16进制数组成的字符串,用以标识唯一的设备,现在想通过代码获取是不可能的了,如果你想看看你设备的UDID,可以通过iTunes来查看。

具有唯一性,且始终不变。

iOS下代码获取方式:也别做梦了,苹果从iOS5开始就移除了通过代码访问UDID的权限。

UUID

UUID(Universally Unique IDentifier)是基于iOS设备上面某个单个的应用程序生成的一个唯一标示,只要用户没有完全删除应用程序,则这个UUID在用户使用该应用程序的时候一直保持不变。如果用户删除了这个应用程序,然后再重新安装,那么这个UUID已经发生了改变。

iOS下代码获取方式:通过调用[[UIDevice currentDevice] identifierForVendor];方法可以获取UUID。

UUID不好的地方就是用户删除了你开发的程序以后,基本上你就不可能获取之前的数据了。

那是不是没有办法用代码获取一个具有唯一性的标识了呢?
答案是否定的。

使用UUID作为唯一标识

我们上面说到,UUID会在用户删除了程序后再重装的时候发生改变,那么怎么让这个UUID不改变,就是我们需要解决的问题。
解决的方案就是使用UUID+KeyChain记录设备唯一标识,这里是GitHub上的链接。

使用方法也很简单,拖入项目,在需要获取UUID的地方,导入UUID.h,然后调用+(NSString *)getUUID;方法即可,这样,KeyChain会帮你保存住第一次获取的UUID,以后用户爱怎么删都行,再装上去,获取的UUID也是相同的,因为是从KeyChain中读取的,不会改变。

你可能感兴趣的:(UDID?UUID?傻傻分不清楚?)