天天看点

iOS开发 - Keychain共享

对于每一个应用来说,KeyChain都有两个访问区,私有区和公共区。私有区是一个sandbox,本程序存储的任何数据都对其他程序不可见。那么如何开启Keychain共享呢?下面以xcode 6.4为例说明:

xcode6.4下实现比较方便,直接在项目中开启keychain共享的选项,自动生动相应的*.entitlements文件

App1:

  1. Open your App's target Capabilities and enable KeyChain Sharing.
  2. Add a identifier.  Keychain Groups添加共享组: com.xxxxx.uniqueid
iOS开发 - Keychain共享

 输入Keychain Groups后点击回车,项目中会自动生成以项目名命名的entitlements文件:         

iOS开发 - Keychain共享

里面的Keychain Access Groups就是我们刚才输入的。

 3.  KeychainItemWrapper使用

Apple官方已经封装好了一个类KeychainItemWrapper

我们要做的就是以这个类来实现一个Keychain的同组间程序的共享

这个类提供了几个接口

iOS开发 - Keychain共享

1) initWithIdentifier中的accessGroup可以传递nil,这时的keychain就是私有区,不能共享数据。

iOS开发 - Keychain共享

     2) 要实现共享,我们就必须传递刚才设置的Keychain Access Groups。

iOS开发 - Keychain共享

  如果这样写的话,会出现问题:

iOS开发 - Keychain共享

原来传递那个accessGroup参数时,前面需要添加一个十位的teamid,比如:QR44GS97KP

iOS开发 - Keychain共享

App2:

按照上面一样的方法即可。

参考:

1. http://www.hongtaozhy.com/2014/01/08/keychain/

2. http://stackoverflow.com/questions/4115744/how-to-share-keychain-data-between-ios-applications