如果使用密码,请获取Touch ID通知

我在我的应用程序中使用触摸ID。

  • 如果Touch ID指纹扫描连续三次失败,我会得到一个Application retry limit exceeded. 错误。
  • 如果触摸ID指纹扫描再次失败两次,我得到一个Biometry is locked out. 错误。

被locking在生物统计之后,您需要input您的密码。 奇怪的是,如果您的密码input正确,那么这不会导致在evaluatePolicycallback中success 。 相反,系统会提示您重试生物测定。

我怎样才能得到一个通知,密码被locking在生物统计之外后正确input?

一个很好的方法来适应我所提到的是使用苹果公司提供的这个项目: 使用Touch ID与Keychain和LocalAuthentication

有两种方式提示您的用户进行Touch ID身份validation; 各有利弊。

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

这允许您提示系统仅向用户询问他们的Touch ID身份validation(如果设置正确)。 如果用户由于在这里或其他地方的重复故障而被locking,则要求他们input密码作为解锁Touch ID再次使用的方式(据我所知)。 由于调用evaluatePolicy:localizedReason:reply:的初始目标是让用户使用Touch ID进行身份validation,所以仍然会要求他们这样做。

这种方法的好处是你从通话中得到的错误更能描述发生了什么(用户取消与失败)。

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

这个选项可能会给你你感兴趣的体验。在使用这个属性存储钥匙串的东西之后,试图从钥匙串中复制钥匙将会出现更熟悉的Touch ID提示符,允许用户在需要的时候input密码我注意到在iOS 8.3 Beta中,提示符在第一次尝试时不显示“input密码”选项。

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