SSKeyChains對蘋果安全框架API進行了簡單封裝,支持對存儲在鑰匙串中密碼、帳戶進行訪問,包括讀取、刪除和設置。SSKeyChain的做者是大名鼎鼎的SSToolkit的做者samsoffes。html
項目地址:https://github.com/samsoffes/sskeychaingit
在工程中加入SSKeyChaingithub
在工程中加入Security.framework框架。安全
把SSKeychain.h和SSKeychain.m加到項目文件夾。app
使用SSKeyChain框架
經過如下類方法來使用SSKeyChain(請查看SSKeyChain.h):ui
+ (NSArray *)allAccounts;atom
+ (NSArray *)accountsForService:(NSString *)serviceName;spa
+ (NSString *)passwordForService:(NSString *)serviceNameaccount:(NSString *)account;調試
+ (BOOL)deletePasswordForService:(NSString *)serviceNameaccount:(NSString *)account;
+ (BOOL)setPassword:(NSString *)password forService:(NSString*)serviceName account:(NSString *)account;
文檔
在Xcode中安裝SSKeyChain的幫助文檔須要如下步驟:
打開菜單 Xcode -> Preferences
選擇 Downloads
選擇 Documentation
點擊底部的加號按鈕,並輸入如下URL: http://docs.samsoff.es/com.samsoffes.sskeychain.atom
點擊」SSKeyChain Documentation」旁邊的install按鈕。 (若是你看不到它,也沒有提示任何錯誤,請重啓Xcode)
確保在Organizer中可選的docset中可以看到SSKeychain。
此外,能夠在線查看SSKeychain Documentation。
調試
若是沒法保存鑰匙串,請使用SSKeychain.h中提供的錯誤代碼,例如:
NSError *error = nil;
NSString *password = [SSKeychainpasswordForService:@"MyService" account:@"samsoffes"error:&error];
if ([error code] == SSKeychainErrorNotFound) {
NSLog(@"Passwordnot found");
}
顯然,你對作這個應該很熟悉了。訪問鑰匙串是件痛苦的事情,你要隨時檢查它的每一個錯誤和失敗。SSKeychain並無使它(鑰匙串)變得更穩定,它僅僅是繁瑣的C APIs封裝。
示例代碼
保存一個UUID字符串到鑰匙串:
CFUUIDRef uuid = CFUUIDCreate(NULL); assert(uuid != NULL); CFStringRef uuidStr = CFUUIDCreateString(NULL, uuid);
[SSKeychain setPassword: [NSString stringWithFormat:@"%@", uuidStr]
forService:@"com.yourapp.yourcompany"account:@"user"];
而後,從鑰匙串讀取UUID:
NSString *retrieveuuid = [SSKeychainpasswordForService:@"com.yourapp.yourcompany"account:@"user"];
注意: setPassword和passwordForSevice方法中的services 和 accounts 參數應該是一致的。