原文链接:http://blog.csdn.net/focusjava/article/details/12839517

WWDC 2013已经闭幕,IOS7 Beta随即发布,界面之难看无以言表...,简直就是山寨Android。

更让IOS程序猿悲催的是,设备唯一标识的MAC Address在IOS7中也失效了。

IOS系统中,获取设备唯一标识的方法有很多:

一.UDID(Unique Device Identifier)

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

二.UUID(Universally Unique Identifier) 

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

三.MAC Address

四.OPEN UDID

五.广告标示符(IDFA-identifierForIdentifier)

六.Vindor标示符 (IDFV-identifierForVendor)

Vendor是CFBundleIdentifier(反转DNS格式)的前两部分。来自同一个运营商的应用运行在同一个设备上,此属性的值是相同的;不同的运营商应用运行在同一个设备上值不同。

经测试,只要设备上有一个tencent的app,重新安装后的identifierForVendor值不变,如果tencent的app全部删除,重新安装后的identifierForVendor值改变。

但是很不幸,上面所有这些表示设备唯一号的标识,在IOS7中要么被禁止使用,要么重新安装程序后两次获取的标识符不一样。

由于IOS系统存储的数据都是在sandBox里面,一旦删除App,sandBox也不复存在。好在有一个例外,那就是keychain(钥匙串)。

通常情况下,IOS系统用NSUserDefaults存储数据信息,但是对于一些私密信息,比如密码、证书等等,就需要使用更为安全的keychain了。

keychain里保存的信息不会因App被删除而丢失。所以,可以利用这个keychain这个特点来保存设备唯一标识。

那么,如何在应用里使用使用keyChain呢,我们需要导入Security.framework ,keychain的操作接口声明在头文件SecItem.h里。

直接使用SecItem.h里方法操作keychain,需要写的代码较为复杂,我们可以使用已经封装好了的工具类KeychainItemWrapper来对keychain进行操作。

KeychainItemWrapper是apple官方例子“GenericKeychain”里一个访问keychain常用操作的封装类,在官网上下载了GenericKeychain项目后,

只需要把“KeychainItemWrapper.h”和“KeychainItemWrapper.m”拷贝到我们项目,并导入Security.framework 。KeychainItemWrapper的用法:

/** 初始化一个保存用户帐号的KeychainItemWrapper */
KeychainItemWrapper *wrapper = [[KeychainItemWrapper alloc] initWithIdentifier:@"Account Number"
accessGroup:@"YOUR_APP_ID_HERE.com.yourcompany.AppIdentifier"];  
//保存数据
[wrapper setObject:@"<帐号>" forKey:(id)kSecAttrAccount];    
[wrapper setObject:@"<帐号密码>" forKey:(id)kSecValueData];    
//从keychain里取出帐号密码
NSString *password = [wrapper objectForKey:(id)kSecValueData];      
//清空设置
[wrapper resetKeychainItem];

其中方法“- (void)setObject:(id)inObject forKey:(id)key;”里参数“forKey”的值应该是Security.framework 里头文件“SecItem.h”里定义好的key,用其他字符串做key程序会出错!

iOS7 UUID唯一标识相关推荐

  1. python获取机器唯一标识_开发中常用工具 - 获取设备的唯一标识、UDID、UUID、keychain保存UUID、判断网络...

    UDID 全名:Unique Device Identifie(设备唯一标识符) 说明:UDID,即设备唯一标识符,这是除序列号之外每台iOS设备的独一无二的号码.UDID只是和设备相关的,是用来区分 ...

  2. 通用唯一标识码UUID的介绍及使用

    转载自 通用唯一标识码UUID的介绍及使用. 什么是UUID? UUID全称:Universally Unique Identifier,即通用唯一识别码. UUID是由一组32位数的16进制数字所构 ...

  3. python namespace unique_Python使用uuid库生成唯一标识ID

    uuid是128位的全局唯一标识符(univeral unique identifier),通常用32位的一个字符串的形式来表现.有时也称guid(global unique identifier). ...

  4. Windows获取系统唯一标识UUID

    Windows获取系统唯一标识UUID  (也叫CSP UUID) 命令行 wmic csproduct get uuid C/C++ 使用CoCreateGuid函数,可以参考官方:https:// ...

  5. _02_使用UUID获取唯一标识

    [文章标题:_02_使用UUID获取唯一标识] [202012-29 03:39:00] 需求: ​ 很多时候我们会需要用到 生成不重复的唯一标识的 的功能,如数据库表中的主键等. 实现: ​ 使用U ...

  6. [转]iOS设备唯一标识探讨

    转自:http://www.jianshu.com/p/b83b0240bd0e iOS设备唯一标识探讨 为了统计和检测应用的使用数据,几乎每家公司都有获取唯一标识的业务需求,在iOS5以前获取唯一标 ...

  7. 转-ios设备唯一标识获取策略

    [http://www.2cto.com/kf/201308/237648.html] 英文原文:In iOS 7 and later, if you ask for the MAC address ...

  8. iOS设备唯一标识获取策略(不定时更新)

    在iOS系统中,获取设备唯一标识的方法有很多: 一.UDID(Unique Device Identifier) UDID的全称是Unique Device Identifier,它就是苹果IOS设备 ...

  9. iOS获取设备的唯一标识的方法总结以及最好的方法

    各种获取设备唯一标识的方法介绍 一.UDID(Unique Device Identifier) UDID的全称是Unique Device Identifier,它就是苹果iOS设备的唯一识别码,它 ...

最新文章

  1. 解决Qt+OpenGL更换图像纹理的问题
  2. 3D点云two-stage目标检测方法优化综述
  3. 5.QT5中的connect的实现
  4. 相对定位android,appium相对位置定位元素----父节点/兄弟节点定位
  5. 创建自定义地理(坐标)变换
  6. 第2天:Ansible-Inventory管理
  7. 第2章 Python 数字图像处理(DIP) --数字图像基础3 - 图像内插 - 最近邻内插 - 双线性插值 - 双三次内插 - 图像放大
  8. 基于Emgu CV+百度人脸识别,实现视频动态 人脸抓取与识别
  9. 电子计算机工程学,电子计算机工程学荣誉工学士资料.ppt
  10. shell脚本eval
  11. java判断socket是否连接_java判断socket是否连接
  12. 除了html 还有什么页面,HTML页面布局有哪些?
  13. Webpack 配置: 自定义网站图标 favicon
  14. Asio Basic Asio Anatomy
  15. 论文笔记:PPT: Pre-trained Prompt Tuning for Few-shot Learning
  16. 帮助你更好的理解Spring循环依赖
  17. 使用eclipse开发Java Web项目(最最最基础)
  18. MIKE与SMS网格的区别
  19. QWT坐标刻度设置时的2个细节
  20. 用java做一个最小的操作系统内核2.

热门文章

  1. PAT 1046 划拳
  2. 脚下,梦開始的地方——七月总结
  3. 鲁大师最新笔记本排行榜,联想最受欢迎,微星这款性能最强!
  4. 毕业设计之路(6)——uip
  5. MathType 6.9中平行四边形符号如何输入
  6. 细粒度识别 | 百度细粒度识别方案
  7. netty-读半包处理--ByteToMessageDecoder
  8. 通过QQ号码获取用户性别
  9. 护眼台灯显色指数是什么意思?led灯显色指数80够吗
  10. Django静态文件的管理