###SSKeychain
SSKeychain获取不变的UUID可唯一标示设备的使用心得
####SSKeyChains对苹果安全框架API进行了简单封装,支持对存储在钥匙串中密码、账户进行访问,包括读取、删除和设置。SSKeyChain的作者是大名鼎鼎的SSToolkit的作者samsoffes。 ####1.准备篇 ####SSKeychain下载地址:https://github.com/Mingriweiji-github/sskeychain-master
在工程中加入SSKeyChain
-
在工程中加入Security.framework框架。
-
把SSKeychain.h和SSKeychain.m 以及SSKeychainQuery.h SSKeychainQuery.m 加到我们的项目文件夹。
通过以下类方法来使用SSKeyChain(请查看SSKeyChain.h):
-
(NSArray *)allAccounts;
-
(NSArray *)accountsForService:(NSString *)serviceName;
-
(NSString *)passwordForService:(NSString *)serviceNameaccount:(NSString *)account;
-
(BOOL)deletePasswordForService:(NSString *)serviceNameaccount:(NSString *)account;
-
(BOOL)setPassword:(NSString )password forService:(NSString)serviceName account:(NSString *)account;
###2.使用篇------获取不变的UUID可唯一标示设备,即使删除应用UUID仍然不变因此可替代原来的UDID
-
在工程中加入Security.framework框架。
-
把SSKeychain.h和SSKeychain.m 以及SSKeychainQuery.h SSKeychainQuery.m 加到我们的项目文件夹。
-
报错位置 #import SSKeychain/SSKeychainQuery.h
-
解决方法 注释//#import SSKeychain/SSKeychainQuery.h 直接导入#import SSKeychainQuery.h
-
具体方法如下 在需要使用的类 例如 AppDelegate里先写两个宏定义
-
define keychain_service @"uuid"
-
define keychain_account @"appuuid"
-
@implementation AppDelegate
-
pragma mark SSKeychain 获取不变的UUID
-
-(NSString *)getUUID { NSString *strUUID = [SSKeychain passwordForService:keychain_service account:keychain_account]; NSError *error=nil;
if (strUUID==nil||[strUUID isEqualToString:@"" ]||strUUID.length==0) { CFUUIDRef uuid = CFUUIDCreate(NULL);
assert(uuid != NULL); CFStringRef uuidStr = CFUUIDCreateString(NULL, uuid); BOOL succcess= [SSKeychain setPassword:[NSString stringWithFormat:@"%@",uuidStr] forService:keychain_service account:keychain_account error:&error]; if(succcess) { NSLog(@"keychain success 获取的UUID is %@",strUUID); }
}
// BOOL delete = [SSKeychain deletePasswordForService:keychain_service account:keychain_account]; // if (delete) { // // NSLog(@"delete is success"); // } NSLog(@"SSKeychain 获取不变的UUID is %@",strUUID);
return strUUID;
}