【问题标题】:Differences between UDID and UUID [duplicate]UDID 和 UUID 之间的区别 [重复]
【发布时间】:2014-02-19 05:54:25
【问题描述】:

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

【问题讨论】:

  • 是否修改了重复的问题?重复的问题没有提出任何相关的问题,它声称拥有的答案被掩埋并添加为标有“(*)”的事后思考。是否可以删除重复的标签?这浪费了我 5 分钟的时间......

标签: ios iphone ipad uuid udid


【解决方案1】:

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

UDID(唯一设备标识符) 唯一标识 ios 设备的 40 个十六进制字符序列。此值可以通过 iTunes 检索,或使用 UIDevice -uniqueIdentifier 找到。源自 MAC 地址等硬件详细信息。

【讨论】:

  • 如何获取 UUID?以及 UUID 中有多少个字符以及它基本使用的位置
  • UUID 是 128 位字符,UUID 用 32 位小写十六进制数字表示。您可以通过参考此 SO Post stackoverflow.com/questions/14352418/… 来获取 UUID
  • @Rugmangathan : 如何以编程方式获取 UDID?
  • @JayprakashDubey,不,您不能再获得 UDID,而是可以使用 identifierForVendor()。有关更多信息,请关注此 SO 帖子 stackoverflow.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中获取唯一标识符

      【讨论】:

        猜你喜欢
        • 2014-08-16
        • 2011-04-08
        • 2012-11-24
        • 2013-06-05
        • 2021-09-29
        • 2020-05-27
        • 2016-03-23
        • 2012-08-11
        • 2012-11-24
        相关资源
        最近更新 更多