如何在iOS应用程序之间共享钥匙串数据
我正在描述一个问题,为此我花了相当长的时间来学习答案。
“ GenericKeychain ”示例是在init中使用accessGroup时提供用于在应用程序之间共享钥匙串数据的包装的良好开端。
然而,在我的应用程序中实现这个产生了一个模糊的错误代码(永久定位)-25243,这意味着:没有访问控制。
我在iPad上运行苹果的示例应用程序(GenericKeychain),以获得相同的错误。 咦?
苹果公司的文件没有提供完成这个任务的必要条件吗?
经过一些(很多)挖掘整个networking,我find了答案。 您在构buildKeychainItemWrapper类时使用的访问组还必须在“keychain-access-groups”部分的每个应用程序的Entitlements.plist文件中指定。
现在看来,我看到“ 钥匙串访问组 ”。 但是,我甚至不知道在那里看。 希望这可以帮助别人。
其实这并不难。 请按照步骤。
应用1:
- 打开您的应用程序的目标function并启用KeyChain共享。
- 添加一个标识符。 (例如:com.example.sharedaccess)
- 添加“ UICKeyChainStore ”到您的项目。
- 确保你有一个团队ID添加到你的App1项目。
- 将Security.framework添加到您的App1项目。
-
并将这些代码添加到您需要的地方。
[UICKeyChainStore setString:@"someValue" forKey:@"someKey" service:@"someService"];
应用2:
- 打开您的应用程序的目标function并启用KeyChain共享。
- 添加一个标识符。 (例如:com.example.sharedaccess)
- 添加“ UICKeyChainStore ”到您的项目。
- 确保你有一个团队ID添加到你的App2项目。
- 将Security.framework添加到您的App2项目。
-
并将这些代码添加到您需要的地方。
NSString *string = [UICKeyChainStore stringForKey:@"someKey" service:@"someService"];
-
这两个项目的TeamID应该相同。
- 我在真正的iPhone设备上尝试了这些步骤。
- 我还尝试了自动和iOs开发configuration文件的这些步骤。
- 我的应用程序捆绑标识符是这样的:com.example.app1,com.example.app2。