Roh*_*sal 24 keychain ios keychainitemwrapper
我有一个iOS应用程序,它将一些敏感信息存储在钥匙串中.在将值写入钥匙串时,我收到错误代码-34018.
我目前正在使用Apple的iOS KeyChainItemWrapper类.
以下两行代码都接收相同的错误代码.
OSStatus res1 = SecItemCopyMatching((__bridge CFDictionaryRef)genericPasswordQuery, (CFTypeRef *)&attributes);
OSStatus res = SecItemUpdate((__bridge CFDictionaryRef)updateItem, (__bridge CFDictionaryRef)tempCheck);
Run Code Online (Sandbox Code Playgroud)
这个问题不是每次都会发生,而是间歇性地发生.一旦我收到此错误,我就无法再将任何值写入钥匙串.
我打印了错误描述,如下所示:
NSError *error = [NSError errorWithDomain:NSOSStatusErrorDomain code:res userInfo:nil];
Run Code Online (Sandbox Code Playgroud)
这就是错误打印出来的:
Error: Error Domain=NSOSStatusErrorDomain Code=-34018 "The operation couldn’t be completed. (OSStatus error -34018.)"
Run Code Online (Sandbox Code Playgroud)
iCa*_*mba 34
似乎这是Keychain中的一个错误,只有当您从xcode启动应用程序时才会出现该错误.见这里:https://github.com/soffes/sskeychain/issues/52
我们调试了很多,当应用程序从后台启动时,访问钥匙串似乎是一个问题.这只发生在调试器上(即从Xcode启动时).我们认为这个问题可能与我们的情况有关,即使它应该被操作系统杀死,调试器也能保持应用程序的活动状态.我们实际上尝试运行应用程序,然后将其置于后台并启动许多其他应用程序以占用RAM.使用调试器时,从后台恢复应用程序时出现错误,而没有调试器则没有(我们每次至少运行10次测试).
Zeb*_*Zeb 27
如果有人会带着这个错误和XCode8与iOS10一起回来,可能你必须在选项卡中启用KeyChain ShareCapabilities:
正如其他人所提到的,这是一个钥匙串错误,Apple 至少在 2015 年年中就意识到并一直意识到这一点。
然而,截至 2016 年 3 月 22 日,Apple 表示:
我们相信这些问题已在 iOS 9.3 中得到解决。
iOS 9.3 于 2016 年 3 月 21 日发布。
请参阅线程:https : //forums.developer.apple.com/thread/4743
引用 Apple 员工的回应:
2016 年 3 月 22 日凌晨 3:28
好的,这是最新的。这是一个复杂的问题,可能有多种原因:
该问题的某些实例是由不正确的应用程序签名引起的。您可以轻松区分这种情况,因为问题 100% 可重现。
该问题的某些实例是由 iOS 支持应用程序开发的错误引起的 (r. 23,991,853)。由于操作系统中的另一个错误 (r. 23,770,418) 掩盖了其影响,因此调试变得复杂,这意味着该问题仅在设备处于内存压力下时才会出现。
我们相信这些问题已在 iOS 9.3 中得到解决。
我们怀疑这个问题可能还有更多的原因。
因此,如果您在运行 iOS 9.3 或更高版本的用户设备(Xcode 未处理过的设备)上看到此问题,请提交有关它的错误报告。尝试在您的错误报告中包含设备系统日志(我意识到在处理客户设备时可能会很棘手;一种选择是要求客户安装 Apple Configurator,让他们查看系统日志)。如果您确实提交了错误,请发布您的错误编号,仅供记录。
我代表 Apple 感谢大家为帮助追踪这个相当可怕的问题所做的努力。
分享和享受
| 归档时间: |
|
| 查看次数: |
14021 次 |
| 最近记录: |