iOS系统中,设备唯一标识有以下几种:

一、UDID(Unique Device Identifier)

UDID的全称是Unique Device Identifier,就是苹果IOS设备的唯一识别码,它由40个字符的字母和数字组成。

二、UUID(Universally Unique Identifier) 

UUID是Universally Unique Identifier的缩写,通用唯一识别码.

三、MAC Address (Mac地址)

四、OPEN UDID

五、广告标示符(IDFA-identifierForIdentifier-advertisingIdentifier)

六、Vindor标示符 (IDFV-identifierForVendor)


不同版本获取唯一标识的方案:

一、iOS 5

iOS 5及之前主要使用UUID。但是该唯一标识符与手机一一对应,可能会泄露用户隐私,已被禁。

二、iOS 6

iOS 6系统则主要使用Mac地址。但是iOS7后,Mac地址被禁,Mac地址全部都变成了02:00:00:00:00:00

三、iOS 7

iOS7后,可以获取identifierForVendor获取advertisingIdentifier,但是,重新安装程序后两次获取的标识符不一样,所以可以将第一次获取的唯一标示存放在keychain(钥匙串)中,再次进入的时候获取keychain中的标识。


通过Keychain获取标识的步骤

一、下载苹果官方文档的项目:

苹果写了一个简单的操作keychain的工具,下载地址:https://developer.apple.com/library/ios/samplecode/GenericKeychain/Listings/Classes_KeychainItemWrapper_m.html

二、把下载后的工程中keychainItemWrapper.h/m两个文件添加到项目中

由于keychainItemWrapper是非ARC,要在BuildPhases –>CompileSources –>keychainItemWrapper中设置fno-objc-arc,如下图

22

三、添加security.framework到工程;

四、设置keychain共享

Capabilities–>Keychain Sharing,打开开关,如下图。

11

打开Keychain Sharing之后,就会自动生成一个entitlements文件,其中${AppldentifierPrefix}是开发者账户的的前缀

五、代码获取唯一标识,并保存keychain

 

六、获取Appldentifier Prefix

多种方式可以获取到开发者账户的的前缀,如下图,其中十位的字符串就是。

33

也可以通过代码获取

七、将获取的AppldentifierPrefix替换掉代码和entitlements文件中的${AppldentifierPrefix}。

 

分类: iOS开发