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

2025-11-11  本文已影响0人  biyuhuaping

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

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

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

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

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 不方便时的第二选择。

步骤:

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




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

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

上一篇 下一篇

猜你喜欢

热点阅读