我正在尝试在我的iOS应用程序和我为该应用程序制作的新的共享扩展程序之间使用“钥匙串共享”。我可以从我的应用程序成功写入钥匙串,但是无法从扩展名中读取相同的项目...它给出了错误“在钥匙串中找不到指定的项目”。
我已经研究了几天这个问题,我强烈怀疑这与ApplicationIdentifierPrefix有关。我使用的iOS应用程序是很久以前创建的,它使用从开发人员门户手动创建的前缀,早在2009年!因此,它与默认情况下通常使用的TeamPrefixIdentifier不同。我什至检查了应用程序和扩展的配置文件,他们确认他们使用了不同的值。
在主应用程序的目标中,配置文件显示:
<key>keychain-access-groups</key>
<array>
<string>ET9Qxxxxxx.com.myapp.keychain</string>
</array>
以及我的扩展名:
<key>keychain-access-groups</key>
<array>
<string>BJ97xxxxx.com.myapp.keychain</string>
</array>
前缀的不同值也对应于配置文件中“应用程序标识符”中的值。
更多配置详细信息: -我已经在“功能”标签中配置了“应用程序组”和“钥匙串共享” ...实际上,应用程序和扩展名都共享相同的权利文件。 -我在所有目标中都使用Xcode的“自动管理签名”选项。 -使用NSUserDefaults的“共享套件”共享可以在应用程序和扩展程序之间正常工作 -我曾尝试使用kSecAttrAccessGroup,该功能在写入钥匙串时有效,但同样,它无法从扩展中读取钥匙串值。
我觉得我需要能够更改扩展的配置文件中的AppIdentifierPrefix或更改钥匙串访问组,但是我不知道该怎么做。有没有办法使这项工作?还是其他解决方法?
谢谢。