获取设备唯一码

有些企业内部程序需要对访问程序的真机做白名单限制,对于设备唯一码,苹果做出了如下限制:?

1.从iOS7之后,获取MAC地址会返回固定值“02:00:00:00:00:00”。?

2.试图获取UDID(设备唯一码)的程序不会通过苹果的审核。

解决方案:
苹果推荐使用UUID(其实微软的GUID就是它的一种实现)。

我们可以在程序第一次启动时生成这个ID并保存起来,但是,如果用户删除该应用再次安装时,又会生成新的字符串,所以不能保证唯一识别该设备,所以这个ID不能存在沙盒里,应该存在KeyChain里。

KeyChain可以理解为是一个更安全的UserDefaults,它不会因为App卸载重装而消失,而且允许在一定限制的前提下令应用程序之间共享数据(参考帖子:http://www.2cto.com/kf/201311/255684.html)。

核心代码:

首先是生成UUID的代码,建议封装成静态类:

1     CFUUIDRef puuid = CFUUIDCreate(nil);
2     CFStringRef uuidString = CFUUIDCreateString(nil, puuid);
3     NSString *result = (NSString *)CFStringCreateCopy(NULL, uuidString);
4     CFRelease(puuid);
5     CFRelease(uuidString);
6     NSLog(@"%@" ,result);

对KeyChain的操作:

首先下载KeyChaind的包装库:http://download.csdn.net/download/u011439689/6877641

导入类库后导入Security.framework,代码如下:

 1     //为应用程序定义KeyChain访问的包装器
 2     KeychainItemWrapper *wrapper = [[KeychainItemWrapper alloc] initWithIdentifier:@"Account Number" accessGroup:@"YOUR_APP_ID_HERE.com.yourcompany.AppIdentifier"];
 3
 4     //写入数据(这里的key一定要用系统提供的枚举)
 5     [wrapper setObject:@"<帐号>" forKey:(id)kSecAttrAccount];
 6     [wrapper setObject:@"<帐号密码>" forKey:(id)kSecValueData];
 7
 8     //取出数据
 9     NSString *password = [wrapper objectForKey:(id)kSecValueData];
10
11     //清理数据
12     [wrapper resetKeychainItem];

注意这些代码都是MRC下的。

获取设备唯一码,布布扣,bubuko.com

时间: 2024-08-03 05:11:53

获取设备唯一码的相关文章

Android获取设备唯一码

String uuid = ""; String serial = null; String m_szDevIDShort = "35" + Build.BOARD.length() % 10 + Build.BRAND.length() % 10 + Build.CPU_ABI.length() % 10 + Build.DEVICE.length() % 10 + Build.DISPLAY.length() % 10 + Build.HOST.length()

iOS获取设备唯一标识的各种方法?IDFA、IDFV、UDID分别是什么含义?

iOS获取设备唯一标识的各种方法?IDFA.IDFV.UDID分别是什么含义? [摘要:1.UDID (Unique Device Identifier) UDID的齐称是Unique Device Identifier,望文生义,它便是苹果IOS装备的独一辨认码,它由40个字符的字母战数字构成.正在良多须要限定] 一.UDID (Unique Device Identifier) UDID的全称是Unique Device Identifier,顾名思义,它就是苹果IOS设备的唯一识别码,它由

ios开发——实用技术篇OC篇&amp;获取设备唯一标识

获取设备唯一标识 WWDC 2013已经闭幕,IOS7 Beta随即发布,界面之难看无以言表...,简直就是山寨Android. 更让IOS程序猿悲催的是,设备唯一标识的MAC Address在IOS7中也失效了. IOS系统中,获取设备唯一标识的方法有很多: 一.UDID(Unique Device Identifier) UDID的全称是Unique Device Identifier,顾名思义,它就是苹果IOS设备的唯一识别码,它由40个字符的字母和数字组成. 二.UUID(Univers

iOS 获取设备唯一标示符的方法

在开发中会遇到应用需要记录设备标示,即使应用卸载后再安装也可重新识别的情况,在这写一种实现方式--读取设备的UUID(Universally Unique Identifier)并通过KeyChain记录. 首先iOS中获取设备唯一标示符的方法一直随版本的更新而变化.iOS 2.0版本以后UIDevice提供一个获取设备唯一标识符的方法uniqueIdentifier,通过该方法我们可以获取设备的序列号,这个也是目前为止唯一可以确认唯一的标示符.好景不长,因为该唯一标识符与手机一一对应,苹果觉得

iOS获取设备唯一标识的8种方法

8种iOS获取设备唯一标识的方法,希望对大家有用. UDID UDID(Unique Device Identifier),iOS 设备的唯一识别码,是一个40位十六进制序列(越狱的设备通过某些工具可以改变设备的 UDID),移动网络可以利用 UDID 来识别移动设备. 许多开发者把 UDID 跟用户的真实姓名.密码.住址.其它数据关联起来,网络窥探者会从多个应用收集这些数据,然后顺藤摸瓜得到这个人的许多隐私数据,同时大部分应用确实在频繁传输 UDID 和私人信息. 为了避免集体诉讼,苹果最终决

IOS获取设备唯一标识的八种方法

免责声明:本文章来源于其他博客整理 参考:http://www.2cto.com/kf/201308/237648.html 参考:http://www.2cto.com/kf/201311/255684.html 在iOS系统中,获取设备唯一标识的方法有很多: 一.UDID(Unique Device Identifier) UDID的全称是Unique Device Identifier,它就是苹果IOS设备的唯一识别码,它由40个字符的字母和数字组成(越狱的设备通过某些工具可以改变设备的U

Android下获取设备唯一标识(UDID, DeviceID...)

android下获取设备唯一标识原本非常简单(至少不会像iOS一样禁用这个,禁用那个),但是由于设备的多样性需要考虑的东西也对应复杂起来. 先附上完整代码 [java] view plaincopy protected static final String PREFS_FILE = "gank_device_id.xml"; protected static final String PREFS_DEVICE_ID = "gank_device_id"; prot

获取设备唯一标识

_currentDeviceID = [[self getDeviceID] UUIDString]; // 1.获取设备唯一标识: - (NSUUID*) getDeviceID{    UIDevice *device = [UIDevice currentDevice];    return device.identifierForVendor;}

[转] iOS7如何获取设备唯一标识

@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css); @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css); WWDC 2013已经闭幕,I