那么在开发中如何才能标识设备的唯一性呢?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结尾的文件。
存取: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依然存在于设备中。