美文网首页
UDID和UUID的区别

UDID和UUID的区别

作者: 晓飞90 | 来源:发表于2016-12-02 10:40 被阅读103次

    UDID和UUID的区别

    1.1【UDID】

    UDID的全名为 Unique Device Identifier :设备唯一标识符。

    • 从名称上也可以看出,UDID这个东西是和设备有关的,而且是只和设备有关的,有点类似于MAC地址。需要把UDID这个东西添加到Provisoning Profile授权文件中,也就是把设备唯一标识符添加进去,以此来识别某一台设备。

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

    (1)iTunes获取UDID:把我们的手机连上电脑,然后打开iTunes.:选中摘要--默认这个位置显示的是序列号,只要点击一下序列号的位置,就可以切换为UDID了。

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

    自从iOS5之后,苹果就禁止了通过代码访问UDID,在这之前,可以使用

    [[UIDevice cuurrent] uniqueIdenfier]
    

    这个方法来获取某设备UDID,现在是不可能了。

    而在目前的SDK中,苹果提供了一个参数identifierForVendor来替代原来UDID的作用。通过代码实现如下:

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

    此时打印出的字符串UUIDString这个东西不是真正的UDID,而是一个有一点像的替代品。如同我上面所说,UDID是只和iOS设备有关的,而这个identifierForVendor是应用和设备两者都有关的.

    我们推测,这个identifierForVendor是一种应用加设备绑定产生的标识符,相当于是:Z(identifierForVendor) = X(某应用) + Y(某设备),再经过加密而来的. 当然,和真正的UDID的区别是显而易见的:也就是说App的开发者没有办法去区分某一台设备了,而是只能识别某个应用在某台设备上。

    1.2【UUID】

    英文名称是:Universally Unique Identifier,翻译过来就是通用唯一标识符。

    是一个32位的十六进制序列,使用小横线来连接:8-4-4-4-12 。UUID在某一时空下是唯一的。比如在当前这一秒,全世界产生的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地址也唯一的识别了一台设备并且不会被修改,不知道以后苹果会对此如何操
    作。果然iOS7中苹果再一次无情的封杀mac地址,使用之前的方法获取到的mac地址全部都变成了02:00:00:00:00:00。
    

    相关文章

      网友评论

          本文标题:UDID和UUID的区别

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