iOS 开发-UDID、UUID、identifierForVendor以及使用keychain存储

参考文章链接:
http://blog.sina.com.cn/s/blog_5971cdd00102vqgy.html

http://www.cnblogs.com/somethingWithiOS/p/6001105.html

重点:
UDID的全名为 Unique Device Identifier :设备唯一标识符。
UUID英文名称是:Universally Unique Identifier,翻译过来就是通用唯一标识符。
而在目前的SDK中,苹果提供了一个参数identifierForVendor来替代原来UDID的作用。通过代码实现如下:

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

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是一个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跟你的设备没有什么关系了。

补充:广告标识

在 iOS 10 之后,如果用户手动限制广告跟踪的话(设置-隐私-广告-限制广告跟踪),IDFA 返回的将全是零。之前用户限制广告跟踪的话只是重置 IDFA。

#import 

NSString *IDFA = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
    //判断IDFA是否为空
    BOOL isEmpty = [[IDFA stringByReplacingOccurrencesOfString:@"-" withString:@""] stringByReplacingOccurrencesOfString:@"0" withString:@""].length;
    if (isEmpty) {
        //不为空,将IDFA作为唯一标识
        NSLog(@"广告标识不为空:%@",IDFA);
    }
    else {
        NSLog(@"广告标识为空:%@",IDFA);
    }

你可能感兴趣的:(iOS 开发-UDID、UUID、identifierForVendor以及使用keychain存储)