在应用里使用使用keyChain,我们需要导入Security.framework,接着需要借助一下第三方的的封装库,可以使用KeychainItemWrapper或者SFHFKeychainUtils,网上有很多,大家可以搜一下。(真机测试)
这里我主要讲一下KeychainItemWrapper的使用,有一点我们需要知道的是KeyChain有两个访问区,私有区和公共区。私有区(sandbox)为本程序存储的任何数据都对其他程序不可见。而要想访问公共区的内容需要新建一个plist文件。注意:该文件最好和工程文件在同一个目录下。
“yourAppID.com.yourCompany.whatever”就是你要起的公共区名称,除了whatever字段可以随便定之外,其他的都必须如实填写。这个文件的路径要配置在 Project->build setting->Code Signing Entitlements里,否则公共区无效。
配置好后,须用你正式的证书签名编译才可通过,否则xcode会弹框告诉你code signing有问题。所以,苹果限制了你只能同公司的产品共享KeyChain数据,别的公司访问不了你公司产品的KeyChain。
/** 初始化一个保存用户帐号的KeychainItemWrapper */
KeychainItemWrapper *wrapper = [[KeychainItemWrapper alloc] initWithIdentifier:@"Account Number" accessGroup:@"YOUR_APP_ID_HERE.com.yourcompany.AppIdentifier"];
注意:accessgroup的参数若是想存在公共区就必须设置,若不需要共享数据可以直接设置为nil
//保存帐号
[wrapper setObject:@"帐号" forKey:
(
__bridge
id
)kSecAttrAccount];
//保存密码
[wrapper setObject:@"密码" forKey:
(
__bridge
id
)kSecValueData];
//从keychain里取出帐号密码
NSString *password = [wrapper objectForKey:
(
__bridge
id
)kSecValueData];
//清空设置
[wrapper resetKeychainItem];
其中方法“- (void)setObject:(id)inObject forKey:(id)key;”里参数“forKey”的值应该是Security.framework 里头文件“SecItem.h”里定义好的key,用其他字符串做key程序会崩溃!
http://blog.csdn.net/meegomeego/article/details/16858537