【iOS】获取设备的信息及唯一标识

1. 获取设备信息

1.1 使用 [UIDevice currentDevice]获取当前设备的一些信息(手机名称及系统版本等);
1.2 使用 [[NSBundle mainBundle] infoDictionary]获取当前app的信息(app版本等);
1.3 使用 [NSLocale currentLocale] 获取本地语言相关的一些东西;
获取本地设置的语言类型[[[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"] firstObject]或者[[NSLocale preferredLanguages] firstObject]


2. 标识相关

2.1 identifierForVendor [[UIDevice currentDevice].identifierForVendor UUIDString];
identifierForVendor对供应商来说是唯一的一个值,也就是说,由同一个公司发行的的app在相同的设备上运行的时候都会有这个相同的标识符。然而,如果用户删除了这个供应商的app然后再重新安装的话,这个标识符就会不一致。
2.2 identifierForAdvertising[[ASIdentifierManager sharedManager].advertisingIdentifier UUIDString];
advertisingIdentifier会返回给在这个设备上所有软件供应商相同的 一个值,所以只能在广告的时候使用。这个值会因为很多情况而有所变化,比如说用户初始化设备的时候便会改变


3. 使用苹果KeychainItemWrapper存储identifierForVendor解决唯一标识问题

3.1 下载
GenericKeychain下载链接

3.2 导入KeychainItemWrapper.hKeychainItemWrapper.m到项目

【iOS】获取设备的信息及唯一标识_第1张图片
导入文件

3.3 导入Security.framework并设置
因为KeychainItemWrapper.h是依赖于苹果的系统库Security.framwork写的,因此需要导入系统库。这个文件采用MRC,因此需要在提前编译设置一下

【iOS】获取设备的信息及唯一标识_第2张图片
导入系统库

【iOS】获取设备的信息及唯一标识_第3张图片
设置MRC文件混编

3.4 设置accessGroup

  • 创建KeychainAccessGroups.plist文件

    【iOS】获取设备的信息及唯一标识_第4张图片
    创建plist文件

  • 配置Code Signing Entitlements

注意:

如果你没有设置Entitlements,则默认使用对应的程序的bundle name,比如com.jv.key1,表示只能给自己程序使用(即使创建时填写group仍然是私有)

【iOS】获取设备的信息及唯一标识_第5张图片
配置plist文件路径

3.5 使用KeychainItemWrapper

【iOS】获取设备的信息及唯一标识_第6张图片
KeychainItemWrapper基本操作

注意:

  1. 如果创建对象时,没有指定group(group传入nil),则会默认添加你keychain-access-groups数组里第一个group。
  2. 创建时传入的group必须和plist文件里面一致,如果你程序添加的group并不存在你的配置文件中,程序会崩溃,表示无法添加。因此你只能添加你配置文件中支持的keychain。

补充说明:
gitHub第三方框架FCUUID提供了相关的方法可以解决删除软件、更新系统后UUID改变的问题。。。链接 -> 哥是链接,轻戳。。。。
KeyChain基础
KeyChain研究
高级(数据安全) touchID延伸等
官方三方的用法
keychain和UUID
通过Safari浏览器获取iOS设备UDID(设备唯一标识符

你可能感兴趣的:(【iOS】获取设备的信息及唯一标识)