UDID和UUID的区别

作者: 一个人在路上走下去 | 来源:发表于2015-12-26 16:37 被阅读1025次

    UDID

    UDID是Unique Device Identifier的缩写,中文意思是设备唯一标识. 在很多需要限制一台设备一个账号的应用中经常会用到,在Symbian时代,我们是使用IMEI作为设备的唯一标识的,可惜的是Apple官方不允许开发者获得设备的IMEI.

    UDID两种用途:
    1)用于一些统计与分析目的;【第三方统计工具如友盟,广告商如ADMOB等】

    2)将UDID作为用户ID来唯一识别用户,省去用户名,密码等注册过程。

    UDID被弃用,可以使用UUID来作为设备的唯一标识。获取到UUID后,如果用NSUserDefaults存储,当程序被卸载后重装时,再获得的UUID和之前就不同了。使用keychain存储可以保证程序卸载重装时,UUID不变。但当刷机或者升级系统后,UUID还是会改变的。

    解决方案
    使用SecureUDID,SecureUDID 是一个开源的基于沙箱机制的 UDID 解决方案,旨在解决苹果因为废弃了 UDID 后导致的隐私问题。

    示例:

    #import "SecureUDID.h"
    
    NSString *domain     = @"com.example.myapp";
    NSString *key        = @"difficult-to-guess-key";
    NSString *identifier = [SecureUDID UDIDForDomain:domain  usingKey:key];
    

    UUID

    UUID是Universally Unique Identifier的缩写,中文意思是通用唯一识别码。UUID是一个软件建构的标准,也是被开源软件基金会(Open Software Foundation,OSF)的组织在分布式计算环境(Distributed Computing Environment,DCE)领域的一部份.UUID的目的,是让分布式系统中的所有元素,都能有唯一的辨识资讯,而不需要透过中央控制端来做辨识资讯的指定. 根据以上定义可知,同一设备上的不同应用的UUID是互斥的,即能在改设备上标识应用.但是并没有明确指出能标识出装有同一应用的不同设备,据推测,这个UUID应该是根据设备标识和应用标识生成唯一标识,再经过加密而来的.

    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]; 
    }
    

    该方法每次都会获取一个唯一的标识字符串,开发者可以在应用第一次启动时候调用一次,然后将该串存储起来,以便以后替代UDID来使用。问题是如果用户删除该应用再次安装时,又会生成新的字符串,所以不能保证唯一识别该设备。

    相关文章

      网友评论

        本文标题:UDID和UUID的区别

        本文链接:https://www.haomeiwen.com/subject/pwkbhttx.html