iOS keychain在同一个开发者账号的数据共享

  • keychain数据存特点
  1. 独立于sandbox沙盒之外,APP被卸载的时候,sandbox沙盒内容被清除,但是keychain依然存在,因为它是存在于系统级别的
  2. 存于keychain的数据是被加密保存的,相对于来说比较安全
  3. 在同一个teamID的APP,可以共享keychain的数据,不是同一个teamID的keychain数据是无法共享的。
  4. keychain存储存在着私有区和共有区,每一个APP都有一块自己的私有区,这个私有区仅限于自己访问使用,就类似于sandbox,但是,还有一块区域可以与其他的APP共享,可以共同操作这一块区域。但是要两个APP可以共享keychain数据,需要在TARGETS->Capobilities->KeychainSharing,打开钥匙串共享。

iOS keychain在同一个开发者账号的数据共享

iOS keychain在同一个开发者账号的数据共享

 

  • keychain实现APP数据共享  

1.TARGETS->Capobilities->KeychainSharing中开启keychain钥匙串共享。在第一次开启之时,显示的是当前APP的bundleID

iOS keychain在同一个开发者账号的数据共享

2.同时,工程中也会出现一个XXXX.entitlements配置文件,在工程文件中$(AppIdentifierPrefix),代表着当前账号的teamID,具体查看的位置如下图所示。

iOS keychain在同一个开发者账号的数据共享

$(AppIdentifierPrefix)的查看在开登录开发者账号之后,看到。

iOS keychain在同一个开发者账号的数据共享3.把要共享keychain数据的APP的bundleID,都添加到keychainSharing里面。例如:A应用使用的bundleID为com.zh.gome,B应用使用的bundleID为com.zh.EShop,如果A应用要拿到B应用的keychain数据,必须要把B应用的bundleID添加到如下位置。同样,如果B应用需要拿到A应用的keychain数据,也需要把A的bundleID添加到B的KeychainSharing中。

iOS keychain在同一个开发者账号的数据共享