iOS 7中苹果再一次无情的封杀mac地址,现在已经不能获取ios7设备的物理地址。那么在开发中如何才能标识设备的唯一性呢?apple公司提供的方法是通过keychain来存一些标志信息,然后通过存的标志信息来让应用程序来识别该设备的唯一性。
apple公司写了一个简单的操作keychain的工具类:https://developer.apple.com/library/ios/samplecode/GenericKeychain/Listings/Classes_KeychainItemWrapper_m.html可以下载,把KeychainItemWrapper.h,.m文件引用xcode中,keychainItemWrapper.m文件可能出错,这里是由于arc编译造成的,我们可以根据提示进行解决,也可以用如下图的方式解决:
接着设置keychain共享:如图所示
此我们可以在项目中看到xxxxx.entitlements结尾的文件。<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<string>$(AppIdentifierPrefix)h.HelloWorld</string>
</plist>
其中的${AppldentifierPrefix}是开发者账户的的前缀,是apple的公司提供的,https://developer.apple.com/membercenter/index.action,可以用自已的账户进行查看。
存取:key chain:
-(void) setKeyChainValue { KeychainItemWrapper *keyChainItem=[[KeychainItemWrapper alloc]initWithIdentifier:@"TestUUID" accessGroup:@"XXXXXX.h.HelloWorld"]; NSString *strUUID = [keyChainItem objectForKey:(id)kSecValueData]; if (strUUID==nil||[strUUID isEqualToString:@""]) { [keyChainItem setObject:[self gen_uuid] forKey:(id)kSecValueData]; } [keyChainItem release]; } -(NSString *) gen_uuid { CFUUIDRef uuid_ref=CFUUIDCreate(nil); CFStringRef uuid_string_ref=CFUUIDCreateString(nil, uuid_ref); CFRelease(uuid_ref); NSString *uuid=[NSString stringWithString:uuid_string_ref]; CFRelease(uuid_string_ref); return uuid; }
应用程序第一次在某台设备上运行时,我们的应用程序保存一个uuid,来标识该设备。等设备把程序删除时,该uuid依然存在于设备中。
相关推荐
Delphi跨平台(Win,Android,IOS)获取设备唯一标识符ios,android,mswindows获取设备唯一标识符和mac地址。
iOS 设备唯一标示符(UDID)解决方案 ZKUDIDManager ,ZKUDIDManager是一个开源的基于Keychain和IDFV的iOS设备唯一标示符(UDID...
如何利用iOS架构企业解决方案,非常实用
iOS开发--Xcode8不支持iOS10.2系统设备的解决方案. (1) Xcode添加路径 Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/10.2 (14C5062c)
用于Unity打包移动设备的调试,能够简单快速的查看报错等信息 Unity 在安卓IOS等移动设备环境下的log查看解决方案
Swift编程实战 iOS应用开发实例及完整解决方案 pdf 清晰版本
iOS苹果审核2.1解决方案审核机制.docx
针对 iOS端禁止列表顶部下拉和底部上拉露出浏览器灰色背景 的解决方案。
获取用户设备的唯一标识
iOS最新审核被拒及解决方案(包括2.1大礼包).docx
对iOS9新特性介绍及解决方案!iOS 9 新特性 1.网络适配-Https HTTP请求失败 解决了编译问题后,程序跑起来了,却发现很多网络请求失败。这是因为iOS9默认不支持HTTP请求,需要改用更安全的HTTPS(默认用TLS 1.2)...
iOS获取设备的唯一标识,用于分别当前设备。
iOS逆向开发常见问题的解决方案.docx
iOS14隐私适配及部分解决方案.docx
iOS14增长支持方案:iOS14后的移动营销解决方案及洞见.pdf
获取iOS设备名称(支持到最新的iPhone X) 生成设备唯一标识符 (使用keyChain 删除App不会有影响)
iOS设备清单和各个iOS设备特性,从里面可以看出哪些设备支持蓝牙4.2,哪些支持蓝牙5.0,以及其他特性
IOS目前获取 设备唯一id 最可靠的方法!
资源名称:Swift编程实战 iOS应用开发实例及完整解决方案资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。