SamkeyChainは、アカウントにアクセスし、パスワードの取得、パスワードの設定、Mac OS XおよびiOSのシステムキーチェーンを使用してパスワードを削除するためのシンプルなラッパーです。
Cocoapodsを使用している場合は、Podfileに次のことを追加するだけです。
pod 'SAMKeychain'または、カルタゴを使用している場合はカートファイル:
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から抽象化されたよりシンプルな実装に切り替えました。
SamkeyChainのバージョン1.0をリードしてくれたCaleb Davenportに感謝します。