钥匙串与watchOS 2共享 - 关于项目设置的所有内容?

时间:2015-09-29 06:48:07

标签: ios objective-c xcode swift watch-os-2

我正在使用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 init方法中删除了访问组字符串。这是有道理的,因为模拟器没有代码签名和access group gets deleted in KeychainItemWrapper initWithIdentifier:(检查initWithIdentifier中的注释:)
  • 从两个视图控制器中的KeychainItemWrapper initWithIdentifier中删除了标识符字符串
  • 从指定钥匙串访问组密钥的两项权利中删除了keychain-access-groups组密钥

您可以删除这三件事,并且钥匙串共享仍然可以在此项目的模拟器中使用。为什么? 至少的“不应该”的权利是否必要?

最终打破这个项目的是改变开发团队/配置文件,这让我觉得项目设置是这个问题的真正关键。

在我自己的项目中,我添加了一个watchOS 2扩展,为两个目标添加了钥匙串共享功能,添加了适当的访问组,即使我的捆绑种子ID,我尝试为iOS应用程序创建单独的配置文件,watchkit app,和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,但正如我之前提到的,似乎模拟器完全忽略了那些钥匙串访问组标识符。

我一直在想,在这一切中我必须有一些明显的错过。任何指针都将非常感激。

1 个答案:

答案 0 :(得分:2)

由于watchOS 2.0无法在手表及其配对设备之间共享钥匙串项目。

https://forums.developer.apple.com/thread/5938