美文网首页
iOS开发 - 跨 App 共享数据:Keychain Shar

iOS开发 - 跨 App 共享数据:Keychain Shar

作者: biyuhuaping | 来源:发表于2025-11-11 18:30 被阅读0次

在 iOS 中,所有应用的 Keychain 数据都存储在系统统一的数据库 /private/var/Keychains/keychain-2.db 中。每个 App 默认只能访问自己创建的 Keychain 条目(即“私有”数据),不同应用之间互相隔离。若希望多个 App 共享同一份 Keychain 数据,可通过启用 Keychain Access Group(钥匙串共享)来实现。

那么怎么启用 Keychain Access Group呢?下面以Xcode 26为例说明:

一、使用 Keychain Sharing 钥匙串共享(推荐)

多个 App 共享一个设备标识(例如 UUID)最可靠的方法。
前提条件:

  • 所有 App 必须使用同一个开发者账号签名。
  • 在 Xcode → “Signing & Capabilities” → 打开 “Keychain Sharing”。
  • 添加相同的 Access Group,例如:
com.company.shared

APP1:

1、打开项目,Capabilities 添加 KeyChain Sharing

添加 KeyChain Sharing

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


image.png

2、Apple官方已经封装好了一个类KeychinaItemWrapper。这个类提供了几个接口:

image.png

添加KeyChain Sharing后,app如果用的同一个账号下的证书,就可以共享钥匙串,所以方法- (id)initWithIdentifier:(NSString *)identifier accessGroup:(NSString *)accessGroup,accessGroup传nil或 TeamID.com.zhou.app 都可以共享。
但如果传错了accessGroup,就会报错:-34018 (无法添加钥匙串项)

APP2:

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


image.png image.png

我另外封装了一个类 KeychainHelper,也在demo中,欢迎一起交流学习:KeychainSharingDemo

demo中,还实现了通过App Groups 共享数据,只需要在 Capabilities添加App Groups

2、App Group + UserDefaults / File

Keychain 不方便时的第二选择。

步骤:

  • 在 Apple Developer 后台为多个 App 添加相同的 App Group ID:group.com.company.shared
  • 在 Xcode 打开 “App Groups” capability。
  • 使用 UserDefaults(suiteName:) 或共享文件夹路径 /Library/Group Containers/

这样即使卸载单个 App,其他 App 仍然能保留相同的 ID。




本文demo:KeychainSharingDemo 欢迎一起交流学习,如有疏漏或错误,请不吝指正。

参考:https://blog.csdn.net/skylin19840101/article/details/48264685

相关文章

网友评论

      本文标题:iOS开发 - 跨 App 共享数据:Keychain Shar

      本文链接:https://www.haomeiwen.com/subject/fpwefstx.html