iOS上对于需要设备唯一性需求的开发,绕不开的有三个MAC地址
,UDID
,UUDI
。
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设备上面某个单个的应用程序生成的一个唯一标示,只要用户<u>没有完全删除应用程序</u>,则这个UUID在用户使用该应用程序的时候一直保持不变。如果用户<u>删除了这个应用程序,然后再重新安装</u>,那么这个UUID已经发生了改变。
iOS下代码获取方式:通过调用[[UIDevice currentDevice] identifierForVendor];
方法可以获取UUID。
UUID不好的地方就是用户删除了你开发的程序以后,基本上你就不可能获取之前的数据了。
那是不是没有办法用代码获取一个具有唯一性的标识了呢?
答案是否定的。
使用UUID
作为唯一标识
我们上面说到,UUID
会在用户删除了程序后再重装的时候发生改变,那么怎么让这个UUID
不改变,就是我们需要解决的问题。
解决的方案就是使用UUID+KeyChain
记录设备唯一标识,这里是GitHub上的链接。
使用方法也很简单,拖入项目,在需要获取
UUID
的地方,导入UUID.h
,然后调用+(NSString *)getUUID;
方法即可,这样,KeyChain
会帮你保存住第一次获取的UUID
,以后用户爱怎么删都行,再装上去,获取的UUID
也是相同的,因为是从KeyChain
中读取的,不会改变。