【发布时间】:2015-09-29 06:48:07
【问题描述】:
我正在使用 Xcode 7.0 (7A220),针对 iOS 9.0 和 watchOS 2.0。
我还没有让钥匙串共享在我自己的 watchOS 2 应用程序中工作,但它在 this example project 中工作,这是我的问题的一部分。
NatashaTheRobot (here) 进行了一场精彩的演讲,其中她介绍了与 watchOS 的钥匙串共享。(Working code from github here),亲眼看看她的 iOS 应用程序和手表应用程序能够通过模拟器中的钥匙串共享。
这是我对她的项目所做的,它仍然有效:
- 从 KeychainItemWrapper 初始化方法中删除了访问组字符串。这是有道理的,因为模拟器没有代码签名,access group gets deleted in KeychainItemWrapper initWithIdentifier:(查看 initWithIdentifier 中的注释:)
- 从两个视图控制器中的 KeychainItemWrapper initWithIdentifier 中删除了标识符字符串
- 从两个授权中删除了 keychain-access-groups 密钥,用于指定钥匙串访问组密钥
您可以删除这三个东西,并且钥匙串共享在该项目的模拟器中仍然有效。为什么? 至少不应该有必要的权利吗?
最终破坏这个项目的是改变开发团队/配置文件,这让我认为项目设置是这个问题的真正关键。
在我自己的项目中,我添加了一个 watchOS 2 扩展,向两个目标添加了钥匙串共享功能,即使使用我的捆绑种子 ID 添加了适当的访问组,我尝试为 iOS 应用程序、watchkit 应用程序创建单独的配置文件,和 watchkit 扩展。我确定我忘记了我已经尝试过的事情,我已经尝试解决这个问题大约一周无济于事。我错过了什么?
Apple's docs on creating capabilities are not super specific on project settings。它说单击并打开项目中的功能。做到了。
Apple's other docs on generic keychain use didn't clear it up for me either。他们有一个项目,其中有 2 个共享一个钥匙串的目标,但据我所知,我的项目设置和他们的设置并没有显着不同。
This answer goes over the useyourloaf article from 2010 on keychain sharing,但就像我之前提到的,模拟器似乎完全忽略了那些钥匙串访问组标识符。
我一直在想,在这一切过程中,一定有一些明显的东西我错过了。任何指针将不胜感激。
【问题讨论】:
标签: ios objective-c xcode swift watchos-2