├── README.md └── SSKeyChainDemo.zip /README.md: -------------------------------------------------------------------------------- 1 | ###SSKeychain 2 | #### SSKeychain获取不变的UUID可唯一标示设备的使用心得 3 | ####SSKeyChains对苹果安全框架API进行了简单封装,支持对存储在钥匙串中密码、账户进行访问,包括读取、删除和设置。SSKeyChain的作者是大名鼎鼎的SSToolkit的作者samsoffes。 4 | ####1.准备篇 5 | ####SSKeychain下载地址:https://github.com/Mingriweiji-github/sskeychain-master 6 | 7 | 在工程中加入SSKeyChain 8 | 9 | - 在工程中加入Security.framework框架。 10 | 11 | - 把SSKeychain.h和SSKeychain.m 以及SSKeychainQuery.h SSKeychainQuery.m 加到我们的项目文件夹。 12 | 13 | 通过以下类方法来使用SSKeyChain(请查看SSKeyChain.h): 14 | 15 | + (NSArray *)allAccounts; 16 | 17 | + (NSArray *)accountsForService:(NSString *)serviceName; 18 | 19 | + (NSString *)passwordForService:(NSString *)serviceNameaccount:(NSString *)account; 20 | 21 | + (BOOL)deletePasswordForService:(NSString *)serviceNameaccount:(NSString *)account; 22 | 23 | + (BOOL)setPassword:(NSString *)password forService:(NSString*)serviceName account:(NSString *)account; 24 | 25 | ###2.使用篇------获取不变的UUID可唯一标示设备,即使删除应用UUID仍然不变因此可替代原来的UDID 26 | - 在工程中加入Security.framework框架。 27 | 28 | - 把SSKeychain.h和SSKeychain.m 以及SSKeychainQuery.h SSKeychainQuery.m 加到我们的项目文件夹。 29 | - 报错位置 #import SSKeychain/SSKeychainQuery.h 30 | 31 | - 解决方法 32 | 注释//#import SSKeychain/SSKeychainQuery.h 33 | 直接导入#import SSKeychainQuery.h 34 | 35 | - 具体方法如下 在需要使用的类 例如 AppDelegate里先写两个宏定义 36 | 37 | - define keychain_service @"uuid" 38 | 39 | - define keychain_account @"appuuid" 40 | 41 | - @implementation AppDelegate 42 | 43 | - pragma mark SSKeychain 获取不变的UUID 44 | 45 | - -(NSString *)getUUID 46 | { 47 | NSString *strUUID = [SSKeychain passwordForService:keychain_service account:keychain_account]; 48 | NSError *error=nil; 49 | 50 | if (strUUID==nil||[strUUID isEqualToString:@"" ]||strUUID.length==0) 51 | { 52 | CFUUIDRef uuid = CFUUIDCreate(NULL); 53 | 54 | assert(uuid != NULL); 55 | 56 | CFStringRef uuidStr = CFUUIDCreateString(NULL, uuid); 57 | 58 | BOOL succcess= [SSKeychain setPassword:[NSString stringWithFormat:@"%@",uuidStr] forService:keychain_service account:keychain_account error:&error]; 59 | if(succcess) 60 | { 61 | NSLog(@"keychain success 获取的UUID is %@",strUUID); 62 | } 63 | } 64 | 65 | // BOOL delete = [SSKeychain deletePasswordForService:keychain_service account:keychain_account]; 66 | // if (delete) { 67 | // 68 | // NSLog(@"delete is success"); 69 | // } 70 | NSLog(@"SSKeychain 获取不变的UUID is %@",strUUID); 71 | 72 | return strUUID; 73 | } 74 | -------------------------------------------------------------------------------- /SSKeyChainDemo.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mingriweiji-github/-SSKeychain/86b0109edab618f2e2acb93c3a0000fe102aea9a/SSKeyChainDemo.zip --------------------------------------------------------------------------------