今天突然想和大家聊聊UDID和UUID的问题,虽然平时我们对这两个东西很忽视,往往也很难区分这两个东西。今天就来好好谈谈。

【UDID】

UDID的全名为 Unique Device Identifier :设备唯一标识符。从名称上也可以看出,UDID这个东西是和设备有关的,而且是只和设备有关的,有点类似于MAC地址。我在上一篇博客中《iOS应用发布流程详解》提到了真机调试,然后需要把UDID这个东西添加到Provisoning Profile授权文件中,也就是把设备唯一标识符添加进去,以此来识别某一台设备。

UDID是一个40位十六进制序列,我们可以使用iTunes和Xcode来获取这个值。

(1)iTunes获取UDID:

把我们的手机连上电脑,然后打开iTunes.

默认这个位置显示的是序列号,只要点击一下序列号的位置,就可以切换为UDID了。

(2)Xcode获取UDID:

把手机连上电脑,然后打开Xcode,选择Window-->Devices,就会显示出当前你连接上的所有设备,其中显示的Identifier就是该设备的UDID:

但是如果我们代码中要用到UDID,那么应该怎么办呢?很遗憾,自从iOS5之后,苹果就禁止了通过代码访问UDID,在这之前,可以使用[[UIDevice cuurrent] uniqueIdenfier] 这个方法来获取某设备UDID,现在是不可能了。对于为什么要禁止访问UDID,我下面会提到。而在目前的SDK中,苹果提供了一个参数identifierForVendor来替代原来UDID的作用。通过代码实现如下:

NSUUID *uuid = [UIDevice currentDevice].identifierForVendor;
NSLog(@"uuid 1 = %@",uuid.UUIDString);

此时打印出的字符串UUIDString这个东西不是真正的UDID,而是一个有一点像的替代品。如同我上面所说,UDID是只和iOS设备有关的,而这个identifierForVendor是应用和设备两者都有关的,A应用安装到张三这台设备上,就会产生一个identifierForVendor(比如是:1234);A应用安装到李四这台设备上,就会产生另一个identifierForVendor(比如是:5678);B应用安装到张三这台设备上,又是一个全新的identifierForVendor(比如是:9999),B应用安装到李四这台设备上,还是一个全新的identifierForVendor(比如是:7777)。但是无论A应用安装卸载多少次,产生的是都是1234.  所以我们知道,这个identifierForVendor是一种应用加设备绑定产生的标识符,相当于是:Z(identifierForVendor) = X(某应用) + Y(某设备)。 当然,和真正的UDID的区别是显而易见的:也就是说App的开发者没有办法去区分某一台设备了,而是只能识别某个应用在某台设备上。

【UUID】

英文名称是:Universally Unique Identifier,翻译过来就是通用唯一标识符。是一个32位的十六进制序列,使用小横线来连接:8-4-4-4-12 。UUID在某一时空下是唯一的。比如在当前这一秒,全世界产生的UUID都是不一样的;当然同一台设备产生的UUID也是不一样的。我在很早之前的一篇博客中《iOS项目开发实战——获取当前的UUID(通用唯一识别码)》中使用了一种现在看起来非常愚蠢的方式来获取当前的UUID,下面也有读者反映了这个情况,现在最简单获取UUID的代码如下:

    for (int i = 0; i < 10; i++){NSString *uuid = [NSUUID UUID].UUIDString;NSLog(@"uuid 2 = %@",uuid);}

通过运行程序可以发现,循环10次,每一次打印的值都是不一样的,当然循环的再多,这个值永远不会出现两个一样的值。所以从某种程序上来说,UUID跟你的设备没有什么关系了。

在很早之前,苹果宣称如果第三方应用开发者继续分享或者使用iPhone、Mac、AppleWatch的UDID的话,那么他们的应用将会禁止上架。为什么苹果要在应用中禁止使用呢?那是因为隐私问题。比如我开发了5款App,很多用户都下载了这5款App并使用。如果我能轻易的获取这些用户的UDID,其实我能拼凑出用户的很多信息。由于UDID本身的隐私属性,之前常常用来做第三方统计和其他的目的。当然现在也有人使用MAC地址来识别设备,因为MAC地址也唯一的识别了一台设备并且不会被修改,不知道以后苹果会对此如何操作。以下是苹果对于禁用UDID的声明:

UDID和UUID的理解相关推荐

  1. 理解 : UDID、UUID、IDFA、IDFV

    iOS获取设备唯一标识的各种方法?IDFA.IDFV.UDID分别是什么含义? iOS获取设备ID总结 IDFA解释 关于UUID的理解 : 英文名称是:Universally Unique Iden ...

  2. iPhone开发关于UDID和UUID的一些理解

    UDID是Unique Device Identifier的缩写,中文意思是设备唯一标识. 在很多需要限制一台设备一个账号的应用中经常会用到,在Symbian时代,我们是使用IMEI作为设备的唯一标识 ...

  3. 手机设备标识码(IMEI、MEID、UDID、UUID、ANDROID_ID、GAID、IDFA等)

    文章目录 Android篇 1 IMEI和MEID 2 DeviceId 3 mac地址 4 ANDROID_ID 5 UUID 6 OpenUDID 7 Serial Number 8 IDFA 9 ...

  4. ios如何看idfv_iOS-理解 : UDID、UUID、IDFA、IDFV

    关于UUID的理解 : 英文名称是:Universally Unique Identifier,翻译过来就是通用唯一标识符. UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一 ...

  5. iOS各种设备识别码IDFA、UDID、UUID、MAC、OpenUDID、IDFV

    今天在app服务端接口文档中看到2个接口名称,是和idfa相关的,就搜索了解了一下,顺便梳理了ios各种设备识别码. *IDFA英文全称Identifier+for+Advertising,即广告标示 ...

  6. Android Q 获取设备唯一ID(UDID\GUID\UUID\SSAID\GAID)

    Android Q获取设备唯一ID(UDID\GUID\UUID\SSAID\GAID) 一.简介 1.1 问题背景 1.2 关键技术 二.解决方案 2.1 谷歌官方推荐方案 (4种) 2.2 实现方 ...

  7. iOS开发中的UDID和UUID详解

    今天突然想和大家聊聊UDID和UUID的问题,虽然平时我们对这两个东西很忽视,往往也很难区分这两个东西.今天就来好好谈谈. [UDID] UDID的全名为 Unique Device Identifi ...

  8. 如何查看苹果的UDID或者UUID

    方法一: 使用以下二维码即可扫码或者成功: 方法二: 其实很简单,就是官网下载itunes,数据线手机连接电脑,点击itunes界面的手机图标,再点击序列号,就变udid了. 详情查看下面步骤: 有时 ...

  9. python获取机器唯一标识_开发中常用工具 - 获取设备的唯一标识、UDID、UUID、keychain保存UUID、判断网络...

    UDID 全名:Unique Device Identifie(设备唯一标识符) 说明:UDID,即设备唯一标识符,这是除序列号之外每台iOS设备的独一无二的号码.UDID只是和设备相关的,是用来区分 ...

最新文章

  1. python2.7升3.7_升级python2.7至python3.7
  2. 解剖人脸识别从无到有的发展史
  3. 智能安防赛道上 国产AI芯片力挫群雄
  4. Python爬虫(二)_urllib2的使用
  5. 加快vs2010的启动速度
  6. 在python中使用grpc和protobuf
  7. javascript 计算每行中的列数
  8. 计算机考研 机械设计,2019考研专业:机械设计制造及其自动化
  9. c++ strlen 使用
  10. LAMP架构源码部署(入门级别超详细步骤)
  11. Chromium浏览器扩展JS对象方法
  12. shell 004 __小斌文档 |数组+函数
  13. 6.WIN10 short cut
  14. 像Swing这种已经不太用的技术,大学还在教,到底要不要学?
  15. 上传artifacts到maven仓库
  16. nginx的启动,停止,重启命令(linux)
  17. 新纪元财务、进销存一体化软件 v4.0 官方
  18. 二十几岁女孩该有的想法
  19. matlab共阳极二极管,三引脚SOT-323封装的共阳极稳压二极管资料
  20. 【简书如何删除专题?】

热门文章

  1. [Android]如何整合两个安卓项目
  2. 电脑常识——host文件修改(屏蔽网站或解开屏蔽)
  3. Eclipse中查找文件快捷键
  4. IDEA写API文档的两种方法
  5. 如何查看log4j日志
  6. 如何备考一次通过PMP项目管理认证考试?
  7. filemanager简单应用
  8. flink-cdc初体验
  9. 你知道该如何选择合适的光缆吗?
  10. RTMP直播视频时延分析