通过使用keychain +uuid:可以实现,应用安装后,再卸载再安装都保证设备号的唯一性
- (void)viewDidLoad {
[super viewDidLoad];// Do any additional setup after loading the view, typically from a nib.
[self setKeyChainValue];
}
- (void)setKeyChainValue{
KeychainItemWrapper * keyChainItem = [[KeychainItemWrapper alloc] initWithIdentifier:@"TjjTestKeychain" accessGroup:@"QEW2Q234R5.com.jar.TjjTestKeychain"];
_strUUID = [keyChainItem objectForKey:(__bridge id)(kSecValueData)];
NSLog(@"uuid-->%@",_strUUID);
//首次执行该方法时, uuid为空
if (_strUUID == nil || [_strUUID isEqualToString:@""]) {
[keyChainItem setObject:[self gen_uuid] forKey:(__bridge id)kSecValueData];
}
NSLog(@"---keyChainItem------>%@",keyChainItem);
NSLog(@"---strUUID--->%@",_strUUID);
_contentLabel.text = _strUUID;
}
准备前提:
1:#import "KeychainItemWrapper.h" //苹果官方的一个Demo里封装的,Demo的下载地址:http://developer.apple.com/library/ios/#samplecode/GenericKeychain/Listings/Classes_KeychainItemWrapper_h.html#//apple_ref/doc/uid/DTS40007797-Classes_KeychainItemWrapper_h-DontLinkElementID_9
2:引用系统库:security.framework
3:KeychainItemWrapper.h是mrc,如果在arc中引用,需要在build phases--》compile sources 里的对应文件加上“-fno-objc-arc”
4:添加文件.entitlements,创建array类型的Keychain Access Groups值为$(AppIdentifierPrefix)com.jar.TjjTestKeychain ,然后buildSetting的code signing的code signing entitlements里填写路径 TjjTestKeychain/TestKeychain.entitlements【也可以点击Targets---》capabilities-->然后开启Keychain Sharing】
参考链接
http://blog.sina.com.cn/s/blog_5971cdd00102vqgy.html
http://www.jianshu.com/p/b83b0240bd0e