有没有一种方法可以在不提示用户使用Touch ID的情况下,确定是否使用Touch ID访问控制设置了iOS钥匙链中的项目(密码、令牌等)?我们需要在执行操作之前确定凭据是否已经保存到钥匙链中(具有Touch ID保护),但我们不想打断用户的Touch ID提示。
我尝试过以下方法...
NSMutableDictionary *query = ...
query[(__bridge id)kSecUseNoAuthenticationUI] = (__bridge id)kCFBooleanTrue;
OSStatus opStatus = SecItemCopyMatching((__bridge CFDictionaryRef)query, NULL);
...
然而,当调用此代码时,用户仍会看到Touch ID提示。我们不希望在UI上显示任何东西,只希望在OSStatus
中返回一个错误,如果需要Touch ID,则应该如此。
有什么想法吗?
kSecUseNoAuthenticationUI:@YES
被更改为kSecUseAuthenticationUI:kSecUseAuthenticationUIFail
感到困惑:前者已被弃用,推荐使用后者。请参见:https://developer.apple.com/documentation/security/ksecusenoauthenticationui - Nicolas Miari