习惯我所说的一个非常好的方法是使用 Apple 提供的这个项目:Using Touch ID with Keychain and LocalAuthentication
有两种方法可以提示您的用户进行 Touch ID 身份验证;每个都有其优点和缺点。
-[LAContext evaluatePolicy:localizedReason:reply:]
.
这允许您提示系统仅询问用户的 Touch ID 身份验证(如果设置正确)。如果用户由于这里或其他地方的反复失败而被锁定,他们会被要求输入密码,以再次解锁 Touch ID 的使用(据我所知)。由于调用的最初目标evaluatePolicy:localizedReason:reply:
是让用户使用 Touch ID 进行身份验证,因此它仍然会要求他们这样做。
这种方法的好处是您从通话中得到的错误更能描述发生的事情(用户取消与失败)。
- 将某些东西存储在由以下方式保护的钥匙串中
kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly
此选项可能会为您提供您感兴趣的体验。使用此属性将某些内容存储在钥匙串中后,尝试从钥匙串中复制它会显示更熟悉的 Touch ID 提示,允许用户在需要时输入他们的密码(尽管我注意到在 iOS 8.3 Beta 中,第一次尝试时提示没有显示“输入密码”选项。
这种方法的缺点是,无论用户如何结束进程(以某种方式失败或只是点击取消),您总是会收到失败的错误。