ios - 使用密码时获取 Touch ID 通知

标签 ios touch-id

我在我的应用中使用 Touch ID。

  • 如果 Touch ID 指纹扫描连续失败三次,我会收到一个超出应用程序重试限制。错误。
  • 如果 Touch ID 指纹扫描再失败两次,我会收到一个Biometry is locked out. 错误。

被生物识别锁定后,您需要输入您的密码。奇怪的是,如果您的密码输入正确,那么这不会导致 evaluatePolicy 回调中的成功。相反,系统会提示您重试生物测定。

在生物识别被锁定后,我如何收到密码已正确输入的通知?

最佳答案

习惯我提到的内容的一个非常好的方法是使用 Apple 提供的这个项目:Using Touch ID with Keychain and LocalAuthentication

有两种方法可以提示您的用户进行 Touch ID 身份验证;各有优缺点。

  1. -[LAContext evaluatePolicy:localizedReason:reply:]

这允许您提示系统仅要求用户进行 Touch ID 身份验证(如果设置正确)。如果用户由于这里或其他地方的反复失败而被锁定,他们将被要求输入密码作为解锁 Touch ID 再次使用的一种方式(据我所知)。由于调用 evaluatePolicy:localizedReason:reply: 的最初目标是让用户使用 Touch ID 进行身份验证,因此它仍会要求他们这样做。

这种方法的好处是您从通话中返回的错误更能描述发生的事情(用户取消与失败)。

  1. 在由 kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly 保护的钥匙串(keychain)中存储一些东西

此选项可能会给您带来您感兴趣的体验。使用此属性将某些内容存储在钥匙串(keychain)中后,尝试从钥匙串(keychain)复制它会出现更熟悉的 Touch ID 提示,允许用户在以下情况下输入密码需要(尽管我在 iOS 8.3 Beta 中注意到,第一次尝试时提示不显示“输入密码”选项。

这种方法的缺点是无论用户如何结束进程(以某种方式失败或只是点击取消),您总是会收到失败错误。

关于ios - 使用密码时获取 Touch ID 通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29728762/

相关文章:

ios - TouchId 应该使应用程序安装后添加/更新的指纹无效

ios - 如何在 AVPlayerViewController 中隐藏 PlaybackControls

ios - PHAsset 获取原始文件名

ios - 指纹认证后 UIBarButtonItem 不出现

ios - 使用 LAContext 和 touchIDAuthenticationAllowableReuseDuration 获取钥匙串(keychain)项目

ios - 在越狱的 iOS 设备上禁用 TouchID

ios - SwiftUI:从单元格 View 中删除托管对象会使应用程序崩溃[非可选属性]?

ios - UIColor 和图形上下文

ios - 用于实时消息传递的 WKExtension 状态和 sendMessage

iOS Touch ID - 我应该选择本地身份验证 API 还是钥匙串(keychain)访问 API?