SAMKeychain
Version 1.5.2
Samkeychain是一個簡單的包裝器,用於使用Mac OS X和iOS上的系統鍵鏈訪問帳戶,獲取密碼,設置密碼和刪除密碼。
如果您使用的是Cocoapods,只需將以下內容添加到您的Podfile中:
pod 'SAMKeychain'或Cartfile,如果您使用的是迦太基:
github "soffes/SAMKeychain"
手動添加到您的項目:
Security.framework添加到您的目標SAMKeychain.h , SAMKeychain.m , SAMKeychainQuery.h和SAMKeychainQuery.m添加到您的項目中。Samkeychain需要弧。
注意:當前Samkeychain不支持Mac OS 10.6。
Samkeychain具有以下類方法用於使用系統鑰匙扣:
+ ( NSArray *)allAccounts;
+ ( NSArray *)accountsForService:( NSString *)serviceName;
+ ( NSString *)passwordForService:( NSString *)serviceName account:( NSString *)account;
+ ( BOOL )deletePasswordForService:( NSString *)serviceName account:( NSString *)account;
+ ( void )setAccessibilityType:( CFTypeRef )accessibilityType;
+ ( BOOL )setPassword:( NSString *)password forService:( NSString *)serviceName account:( NSString *)account;那樣容易。 (有關所有方法,請參見SamkeyChain.H和SamkeyChainquery.h。)
閱讀在線文檔。
如果將您保存到鑰匙扣失敗,請使用NSERROR對象處理它。您可以調用[error code]以獲取數字錯誤代碼。 samkeychain.h和secbase.h中的其餘值定義了一些值。
NSError *error = nil ;
SAMKeychainQuery *query = [[SAMKeychainQuery alloc ] init ];
query.service = @" MyService " ;
query.account = @" soffes " ;
[query fetch: &error];
if ([error code ] == errSecItemNotFound) {
NSLog ( @" Password not found " );
} else if (error != nil ) {
NSLog ( @" Some other error occurred: %@ " , [error localizedDescription ]);
}顯然,您應該做一些更複雜的事情。如果您需要的只是錯誤消息,則只需調用[error localizedDescription] 。
使用鑰匙扣很爛。您應該真正檢查錯誤和失敗。該庫不會使其更穩定,它只包含所有煩人的C API。
您也確實不應該使用默認值,而應該設置accessibilityType類型。 kSecAttrAccessibleWhenUnlocked應該適用於大多數應用程序。有關其他選項,請參見Apple文檔。
最初,這是由Emkeychain和Sdkeychain(現在都消失的)啟發。感謝作者。此後,Samkeychain已切換到Sstoolkit抽象的更簡單的實現。
非常感謝Caleb Davenport在Samkeychain版本1.0上領先。