iOS: 获取不变的UDID

iOS唯一标识的历史历程

iOS 6.0

在iOS6.0以前,是使用uniqueIdentifier来获取手机的唯一标识,后来苹果感觉这样会泄露用户隐藏,就封掉了这个方法;

iOS 6.0系统新增了两个用于替换uniqueIdentifier的接口

  • identifierForVendor
  • advertisingIdentifier

但是 identifierForVendor 会在卸载后再重装,就会改变,所以就不能当做手机的唯一标识使用。
后来,未来解决问题,程序员们想到了使用WiFi的mac地址来作为手机的唯一标识。很欢乐的使用着·······

但是············

iOS 7.0

iOS 7中苹果再一次无情的封杀mac地址,使用之前的方法获取到的mac地址全部都变成了02:00:00:00:00:00

聪明的程序员们,想到了用广告标示符作为手机唯一的标识。但是·······
只要用户重置了广告标示符以后,还是会获得一个新的广告标识。这样一来,广告标识付也不可以用了。。。。

这下该如何是好呢?

接下来就是介绍解决方法的时候了

使用KeyChain来保存获取到的唯一标示符呢,这样以后即使APP删了再装回来,也可以从KeyChain中读取回来,当然也不会害怕重置了广告标示符

FCUUID

在github搜一下UDID,发现这个东东的星星最多。看来一下readme,添加到自己的项目中测试,可用

设备标识在 完全抹掉iPhone的时候,仍然会变。学长只能帮到这了····

使用方法

1、点击下载所需文件
因为FCUUID需要依靠该作者的另外一个文件。所以这里有就把所有的文件放在了一起,供大家下载使用。
作者 githun地址 https://github.com/fabiocaccamo/FCUUID

2、在项目中添加 Security.framework

3、导入头文件

 #import "FCUUID.h"

接下来就可以欢快的使用了

FCUUID提供的类方法

// 每次运行应用都会变
+(NSString *)uuid;

//changes each time (no persistent), but allows to keep in memory more temporary uuids
+(NSString *)uuidForKey:(id)key;

// 每次运行应用都会变
+(NSString *)uuidForSession;

// 重新安装的时候会变
+(NSString *)uuidForInstallation;

// 卸载后重装会变
+(NSString *)uuidForVendor;

// 抹掉iPhone的时候才会变,适合做唯一标识
+(NSString *)uuidForDevice;

个人测试数据

iOS: 获取不变的UDID_第1张图片
Paste_Image.png

你可能感兴趣的:(iOS: 获取不变的UDID)