转载自: http://blog.csdn.net/chenyufeng1991/article/details/51531491


UDID (Unique Device Identifier :设备唯一标识符)

自从iOS5之后,苹果就禁止了通过代码访问UDID。

iOS 5之前,获取 UDID

1
[[UIDevice current] uniqueIdenfier]

iOS 5之后,使用identifierForVendor 代替 UDID

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

这个identifierForVendor是一种应用加设备绑定产生的标识符,相当于是:Z(identifierForVendor) = X(某应用) + Y(某设备)。但是无论A应用在同一台手机上安装卸载多少次, identifierForVendor 的值都不变。

禁止使用 UDID 是处于保护用户隐私的目的。

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

UUID (Universally Unique Identifier :通用唯一标识符)

代码获取 UUID

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

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