iOS keychain保存用户信息

一、讨论

保存用户的信息并获得苹果设备的唯一标识是开发者们一直讨论的东西,早期苹果是有提供方法来直接获取到用户手机的udid作为唯一标识,但是不久之后这个方法就被禁止了。然后机智的大神们想到获取设备的MAC地址来作为唯一标识,但是仍然不幸的被苹果给无情的拒绝了。

现在的话我们可以通过[UIDevice currentDevice].identifierForVendor.UUIDString这个方法获取标识,但是这串字符串在应用卸载后重新安装操作后会发生改变,因此并不能唯一的标识设备。so,keychain就登场了。

二、keychain

keychain服务提供了一种安全的保存私密信息(密码,序列号,证书等)的方式,每个ios程序都有一个独立的keychain存储。相对于 NSUserDefaults、文件保存等一般方式,keychain保存更为安全,而且keychain里保存的信息不会因App被删除而丢失,所以在重装App后,keychain里的数据还能使用。并且还允许同一开发商的不同APP之间的访问。

三、Xcode配置

  1. 使用keychain得导入Security.framework
  2. 配置一个.plist文件,里面包含的就是AceessGroup的分组信息

    plist文件

  3. 设置文件路径

    文件路径

.plist中的$(AppIdentifierPrefix)com.****字符串说明

  1. AppIdentifierPrefix:开发者帐号ID,是一个10个字符组成的bundle seed id,在申请账号的时候会自动生成。因此需要跟xcode选择的证书相匹配。eg:33LE83RVLQ
  2. com.****:代表公司名称。
  3. 这字符串是开发者自己定义的
  4. 关于这字符串的详细说明可参照这个链接https://appworker.wordpress.com/2011/12/02/ios-bundle-id-or-bundle-seed-id-%E8%A7%A3%E8%AA%AA/

还有一种更方便的设置方法:打开KeyChain Sharing开关,然后设置好主KEY的名称。跟着设置步骤走即可,生成的.entitlements跟上面的.plist文件是一样的。

四、代码实现

方法1、使用苹果官方封装的类实现

KeychainItemWrapper类添加到目录当中即可

下载链接https://developer.apple.com/library/ios/samplecode/GenericKeychain/Introduction/Intro.html#//apple_ref/doc/uid/DTS40007797

类中的一些方法说明

KeychainItemWrapper *wrapper = [[KeychainItemWrapper alloc] initWithIdentifier:@"Account Number"
                                                                   accessGroup:@"YOUR_APP_ID_HERE.com.yourcompany.AppIdentifier"];  
 
//保存帐号
[wrapper setObject:@"<帐号>" forKey:(id)kSecAttrAccount];    

//保存密码
[wrapper setObject:@"<帐号密码>" forKey:(id)kSecValueData];    
 
//从keychain里取出帐号密码
NSString *password = [wrapper objectForKey:(id)kSecValueData];      
 
//清空设置
[wrapper resetKeychainItem];

waring:方法- (void)setObject:(id)inObject forKey:(id)key;里参数forKey的值应该是Security.framework 里头文件“SecItem.h”里定义好的key,用其他字符串做key程序会崩溃!

方法2、使用第三方库SFHFKeychainUtils

使用方法请参照这个链接http://www.wahenzan.com/a/mdev/ios/2014/1129/130.html

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值