如何在iOS应用程序之间共享钥匙串数据

我正在描述一个问题,我花了很长时间来学习答案。 “GenericKeychain”示例是在init中使用accessGroup时提供在应用程序之间共享钥匙串数据的包装器的良好开端。 但是,在我的应用程序中实现这一点产生了一个模糊的错误代码(永远定位)-25243,这意味着:没有访问控制。 我在iPad上运行Apple的示例应用程序(GenericKeychain)只是为了得到同样的错误。咦? Apple的文档是否无法实现完成此任务所需的内容?     
已邀请:
经过整个网络的一些(很多)挖掘后,我找到了答案。在构造KeychainItemWrapper类时使用的访问组也必须在“keychain-access-groups”部分的每个应用程序的Entitlements.plist文件中指定。 现在看来,我看到“keychain-access-groups”几乎是显而易见的。但是,我甚至不想看那里。希望这有助于其他人。     
实际上并不难做到。请按照步骤操作。 应用1: 打开应用程序的目标功能并启用KeyChain共享。 添加标识符。 (例如:com.example.sharedaccess) 将“UICKeyChainStore”添加到您的项目中。 确保您的App1项目中添加了团队ID。 将Security.framework添加到App1项目中。 并将这些代码添加到您需要的地方。
[UICKeyChainStore setString:@"someValue" forKey:@"someKey" service:@"someService"];
应用2: 打开应用程序的目标功能并启用KeyChain共享。 添加标识符。 (例如:com.example.sharedaccess) 将“UICKeyChainStore”添加到您的项目中。 确保您的App2项目中添加了团队ID。 将Security.framework添加到App2项目中。 并将这些代码添加到您需要的地方。
NSString *string = [UICKeyChainStore stringForKey:@"someKey" service:@"someService"];
两个项目的TeamID应该相同。 我在真正的iPhone设备上尝试了这些步骤。 我还尝试了使用自动和iOs开发配置文件的这些步骤。 我的应用程序的包标识符是这样的:com.example.app1,com.example.app2。     

要回复问题请先登录注册