钥匙串 SecOSStatusWith 错误:[-34018]

5

我在设备上访问Keychain时遇到了问题。这种情况只会发生在从Xcode启动应用程序时,如果我自己启动应用程序(通过点击其图标),那么Keychain将可以正常工作。模拟器中也没有问题。

控制台输出:

Jan 27 14:33:24 iPhone MyApp[4305] <Error>:  SecOSStatusWith error:[-34018] The operation couldn’t be completed. (OSStatus error -34018 - Remote error : The operation couldn't be completed. (OSStatus error -34018 - client has neither application-identifier nor keychain-access-groups entitlements))
Jan 27 14:33:24 iPhone securityd[77] <Error>:  securityd_xpc_dictionary_handler MyApp[4305] delete The operation couldn’t be completed. (OSStatus error -34018 - client has neither application-identifier nor keychain-access-groups entitlements)

我正在使用Xcode 6.1.1和装有iOS 8.1.1的iPhone 5。

值得注意的是,我尝试调试的应用程序在一个Cocoa Touch框架目标中包含访问钥匙串的代码(这可能是问题的来源)。

预配配置文件是通用的:iOSTeam Provisioning Profile: *(由Xcode管理)。


您的项目中是否添加了任何授权文件? - nprd
@NaveenPrasadR 不是。 - Tom Kraina
可能是重复的问题,参考OSStatus error code -34018 - GoRoS
4个回答

2

在从Xcode启动应用程序时,尝试禁用所有断点。您可以在启动后重新启用它们。


1

您可以通过2种方式解决此问题。

  1. 将授权文件添加到您的项目中。 enter image description here

  2. 通过代码签名强制将文件夹代码签名添加到您的目标。

codesign --verify --force --sign "$CODE_SIGN_IDENTITY""$CODESIGNING_FOLDER_PATH"

enter image description here


我仍然遇到了这个问题。它只会在我的应用程序通过以下应用程序委托方法重新打开 Deeplink 时发生:- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url 如果我只是启动应用程序,钥匙串写入就可以正常工作,如果我最小化和最大化应用程序,它仍然可以正常工作。只有当我使用深度链接重新打开时才会出现此问题。我已经在我的项目中配置了 MyApp.entitlements(在功能选项卡中的 Keychain 共享)。 - FranticRock

0
在目标的“Build Phases”中添加一个包含以下内容的“Run Script”:

codesign --verify --force --sign "$CODE_SIGN_IDENTITY" "$CODESIGNING_FOLDER_PATH"

示例: 添加运行脚本

我不确定为什么需要这样做,但它对我来说可以解决一个非常类似的错误。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接