指定访问组时KeychainItemWrapper错误
相当长一段时间以来,我一直使用KeychainItemWrapper的ARC版本成功地读写私人钥匙串项目。
我现在正在努力将我的iOS应用程序转换为使用共享访问组,以便我的2个共享相同应用程序前缀的应用程序可以访问这些钥匙串项目。 在功能部分,我添加了钥匙串组“MYAPPPREFIX.MYSHAREDACCESSNAME”
我正在使用这些行将我的变量写入钥匙串组:
keychainItemWrapper = [[KeychainItemWrapper alloc] initWithIdentifier:key accessGroup:@"MYAPPPREFIX.MYSHAREDACCESSNAME"];
[keychainItemWrapper setObject:value forKey:(__bridge id)(kSecAttrAccount)]; // store the new value in the keychain
如果accessGroup被指定为零 ,那么效果很好。 但是,如果我指定访问组,我会在调试器日志中遇到以下错误:
在 - [KeychainItemWrapper writeToKeychain],.... / KeychainItemWrapper.m中的断言失败:329因未捕获异常'NSInternalInconsistencyException'而终止应用程序,原因:'无法添加Keychain项目'。
由此产生的OSStatus错误代码是-25243,我无法追踪更多信息。
为了写入共享访问组还有其他事情需要我去做吗?
如果它帮助其他人,我能够找出问题。 在Xcode'Capabilities'中,我需要省略应用程序ID前缀。 但是,标识访问组时需要包含应用标识前缀。
因此,在功能上,我将一个组命名为“myAccessGroup”。
在我的代码中,我包含了这样的前缀:
keychainItemWrapper = [[KeychainItemWrapper alloc] initWithIdentifier:key accessGroup:@"xxxxxxxx.myAccessGroup"];
链接地址: http://www.djcxy.com/p/83285.html
上一篇: KeychainItemWrapper error when specifying an access group
下一篇: Testing the Keychain