iOS TouchID每次访问后如何强制重新授权,或者查看是否解锁?

How Do I Force An iOS TouchID To Re-Authorize After Each Access, or Check If It is Unlocked?

好的。我怀疑我只需要被引导到 "RTFM." 的适当 "M" 我不是 iOS 的新手,但对钥匙串使用相当陌生。我正在使用一个名为“FXKeychain”的很好的钥匙串包装器。“

我有一个包含登录名的应用程序,密码存储在默认钥匙串中。

我使用TouchID验证用户并填写密码。

为了做到这一点,我显示了一个 "thumbprint" 按钮,带有一个运行标准代码的 IBAction 处理程序:

self.s_authenticationContext.evaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics, localizedReason: "Yo. Gimmie ur thumb.", reply: self.touchIDCallback)

问题是,一旦解锁,后续触摸按钮,使用上面的方法,跳过警报,简单地失败。

这是一个问题,因为显示的是同一个按钮,即使在用户通过验证之后也是如此。我想:

  1. 输入密码后重新锁定,所以用户每次都必须重新认证(首选),或者
  2. 显示一个不同的按钮图像,表示不再需要指纹。

这意味着我需要:

  1. 想办法重新锁定 TouchID,或者
  2. 查明用户是否已解锁。

有什么想法吗?

谢谢!

'unlocked' 是您的身份验证上下文,而不是钥匙串。如果您在调用 evaluatePolicy 之前分配一个新的身份验证上下文,那么将再次显示 touchID 对话框。

但是,您实际上可以使用 touchID 直接验证对钥匙串项的访问。 Apple 示例代码演示了如何执行此操作 - https://developer.apple.com/library/ios/samplecode/KeychainTouchID/Introduction/Intro.html#//apple_ref/doc/uid/TP40014530-Intro-DontLinkElementID_2