iOS中利用KeyChain获取UUID(唯一标示符)
2016-04-07 14:51
447 查看
我们经常会在App开发中,要获取设备的唯一标示符(UUID)。随着苹果对于其他获取唯一标示符的禁止,目前来说,利用KeyChain来获取唯一标示符(UUID)是最好的选择。对于KeyChain的基本知识,我就不多做介绍了。KeyChain是在设备上保存关键数据的唯一安全的地方。所以利用KeyChain也可以用来保存敏感信息,例如用户名或者登陆密码等。今天我们只介绍利用KeyChain来获取UUID。
苹果官方给出了一个示例,名字叫做KeychainItemWrapper。下载地址:点击打开链接。将下载下来的KeychainItemWrapper.h和KeychainItemWrapper.m文件拖入工程中。由于KeychainItemWrapper是非ARC的,所以必须要在.m文件的后面加上-fno-objc-arc。
而且必须要引入Security.framework框架。下面是KeychainItemWrapper的使用来获取UUID的代码。-(NSString *) getKeychainIdentifier
{
KeychainItemWrapper *wrapper = [[KeychainItemWrapper alloc] initWithIdentifier:@"deviceIdentifier" accessGroup:nil];
NSString *uniqueIdentifier = [wrapper objectForKey:(id)kSecAttrAccount];
if ([uniqueIdentifier isEqualToString:@""])
{
[wrapper setObject:[self getUUID] forKey:(id)kSecAttrAccount];
}
uniqueIdentifier = [wrapper objectForKey:(id)kSecAttrAccount];
return uniqueIdentifier;
}
#pragma mark - 获取UUID
-(NSString *)getUUID
{
CFUUIDRef uuid_ref = CFUUIDCreate(NULL);
CFStringRef uuid_string_ref= CFUUIDCreateString(NULL, uuid_ref);
CFRelease(uuid_ref);
NSString *uuid = [NSString stringWithString:(__bridge NSString*)uuid_string_ref];
CFRelease(uuid_string_ref);
return uuid;
}此方法可以获得唯一标识符,不管是否删除本应用,获得的UUID都是唯一的。
苹果官方给出了一个示例,名字叫做KeychainItemWrapper。下载地址:点击打开链接。将下载下来的KeychainItemWrapper.h和KeychainItemWrapper.m文件拖入工程中。由于KeychainItemWrapper是非ARC的,所以必须要在.m文件的后面加上-fno-objc-arc。
而且必须要引入Security.framework框架。下面是KeychainItemWrapper的使用来获取UUID的代码。-(NSString *) getKeychainIdentifier
{
KeychainItemWrapper *wrapper = [[KeychainItemWrapper alloc] initWithIdentifier:@"deviceIdentifier" accessGroup:nil];
NSString *uniqueIdentifier = [wrapper objectForKey:(id)kSecAttrAccount];
if ([uniqueIdentifier isEqualToString:@""])
{
[wrapper setObject:[self getUUID] forKey:(id)kSecAttrAccount];
}
uniqueIdentifier = [wrapper objectForKey:(id)kSecAttrAccount];
return uniqueIdentifier;
}
#pragma mark - 获取UUID
-(NSString *)getUUID
{
CFUUIDRef uuid_ref = CFUUIDCreate(NULL);
CFStringRef uuid_string_ref= CFUUIDCreateString(NULL, uuid_ref);
CFRelease(uuid_ref);
NSString *uuid = [NSString stringWithString:(__bridge NSString*)uuid_string_ref];
CFRelease(uuid_string_ref);
return uuid;
}此方法可以获得唯一标识符,不管是否删除本应用,获得的UUID都是唯一的。
相关文章推荐
- 6.2.5 QMGR_QUEUE:收信域信息
- EasyUI iframe 里 dialog 模态 弹出 到 顶层
- easyui datagrid添加行时让高度自适应
- django的request、session没有获取到值,赋默认值
- Windows 10 Mobile Build 14295 备份微信记录方法
- iOS开发中关于UIImage的知识点总结
- GPUImage图像处理库使用(一)
- SPOJ3267 D-query 离线+树状数组 在线主席树
- make: *** [.build_release/lib/libcaffe.so] 错误 1
- iOS成长之路之Your build settings specify a provisioning profile with the UUID “”, however, no such provis
- UITapGestureRecognizer+动画
- STL序列式容器 - deque
- 5.3.1.4 其他ACL函数: smtpd_check_size、smtpd_check_rewrite、smtpd_check_queue
- LeetCode 250. Count Univalue Subtrees(单值子树)
- 几个跳转语句的介绍:break语句,continue语句,return语句。
- IOS-61-解决UIImage在压缩时失真问题
- APUE------线程介绍
- UIScrollView
- UITextField的使用
- WebRequest请求范例