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上领先。