iOS KeyChain 应用间共享数据

3,808 阅读2分钟

#1、KeyChain是什么?

KeyChain的作用:可将用户信息加密存储在钥匙串中,保证用户信息的安全性;另外多个应用可通过keyChain共享用户信息。

#2、如何使用KeyChain?

1、苹果官方封装好了一个简单的工具(我们需要导入Security.framework ),用于存取、删除keyChain的数据。 直接到github上搜索 “KeychainItemWrapper”,找到星星较多的一个就行。例如:KeychainItemWrapper

KeychainItemWrapper的接口如下:

@interface KeychainItemWrapper : NSObject
{
    NSMutableDictionary *keychainItemData;		// The actual keychain item data backing store.
    NSMutableDictionary *genericPasswordQuery;	// A placeholder for the generic keychain item query used to locate the item.
    NSString* _identifier;
}

@property (nonatomic, strong) NSMutableDictionary *keychainItemData;
@property (nonatomic, strong) NSMutableDictionary *genericPasswordQuery;

// Designated initializer.
- (id)initWithIdentifier: (NSString *)identifier accessGroup:(NSString *) accessGroup;
- (void)setObject:(id)inObject forKey:(id)key;
- (id)objectForKey:(id)key;

// Initializes and resets the default generic keychain item data.
- (void)resetKeychainItem;

@end
  • | - (id)initWithIdentifier: (NSString *)identifier accessGroup:(NSString *) accessGroup;

这个方法中:如果你想要在应用之间共享信息,那么你需要指定访问组(keychain access group)。有同样的访问组的应用才能够访问同样的keychain信息

- (void)setObject:(id)inObject forKey:(id)key;
- (id)objectForKey:(id)key;

这两个方法,看名字就应该知道怎么用了 只是,key不是随便传的, (id)kSecAttrAccount:保存账号, (id)kSecValueData:保存密码


2、利用第三方框架使用Keychain 推荐这个框架:SAMKeychain,星星较多,使用比较方便。

#3、KeyChain-应用间共享数据 ##1、注意点:

1、相同的bundle id:相同bundle解释就是:比如这里有两个应用程序: A应用程序使用的provision对应的 bundle id是 com.jaybin.keychain1,B应用程序使用的provision对应的 bundle id是 com.jaybin.keychain2 。那么这两个应用程序就可以共享keychain数据。 2、打开Keychain Sharing权限

keyChain Sharing权限.png
如图打开Keychain Sharing开关,设置好正确的 Keychain Group,设置好后应该会生成一个文件,如下图

plist.png

关于应用间共享数据的内容,我是参考其他文章,这一篇讲解的不错:http://blog.csdn.net/he_jiabin/article/details/43764637