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

作者: HoyaWhite | 来源:发表于2016-06-13 10:00 被阅读407次

    1. 获取设备信息

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


    2. 标识相关

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


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

    3.1 下载
    GenericKeychain下载链接

    3.2 导入KeychainItemWrapper.hKeychainItemWrapper.m到项目

    导入文件

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

    导入系统库
    设置MRC文件混编

    3.4 设置accessGroup

    • 创建KeychainAccessGroups.plist文件

      创建plist文件
    • 配置Code Signing Entitlements

    注意:

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

    配置plist文件路径

    3.5 使用KeychainItemWrapper

    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】获取设备的信息及唯一标识

        本文链接:https://www.haomeiwen.com/subject/yngprttx.html