ios - 如果 TouchID 失败,则转发到系统密码验证

标签 ios swift cocoa-touch touch-id localauthentication

我想使用 TouchID 验证我的应用程序,验证成功。如果 TouchID 不匹配,则会打开“再试一次”警报,并且在该警报中有“输入密码”选项。如果用户选择它,系统密码验证应该显示,但我该怎么做呢?

在这里分享我的代码:

func touchIDAuthentication() {
    let context = LAContext() //1
    var error:NSError?
    guard context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &error) else {
        showAlertViewIfNoBiometricSensorHasBeenDetected()
        return
    }
    if context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &errorPointer) {
        context.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason: reason, reply: { (success, error) in
            if success {
                DispatchQueue.main.async {
                    print("Authentication was successful")
                }
            }else {
                DispatchQueue.main.async {
                    self.displayErrorMessage(error: error as! LAError )
                    print("Authentication was error")
                }
            }
        })
    }else {
        self.showAlertWith(title: "Error", message: (errorPointer?.localizedDescription)!)
    }
}



func displayErrorMessage(error:LAError) {
        var message = ""
        switch error.code {
        case LAError.authenticationFailed:
            message = "Authentication Failed."
            break
        case LAError.userCancel:
            message = "User Cancelled."
            break
        case LAError.userFallback:
            message = "Fallback authentication mechanism selected."
            break
        case LAError.touchIDNotEnrolled:
            message = "Touch ID is not enrolled."

        case LAError.passcodeNotSet:
            message = "Passcode is not set on the device."
            break
        case LAError.systemCancel:
            message = "System Cancelled."
            break
        default:
            message = error.localizedDescription
        }
        self.showAlertWith(title: "Authentication Failed", message: message)
    }

如果输入它移动到我的应用程序中的密码,如何显示此屏幕。如何实现这一点帮助我。提前致谢。

最佳答案

如果您使用策略 .deviceOwnerAuthentication然后立即显示“输入密码”选项。

如果您使用 .deviceOwnerAuthenticationWithBiometrics ,那么“输入密码”选项只会在第一次生物识别身份验证尝试失败后显示。

无论用户如何进行身份验证,您的完成闭包都会被调用。

关于ios - 如果 TouchID 失败,则转发到系统密码验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47201176/

相关文章:

ios - 如何在 iOS UIWebView 中禁用谷歌地图移动网站广告?

ios - 通过蜂窝数据包跟踪时得到错误的坐标

ios - swift - 如何在一个 tabBarItem 的两个 View Controller 之间切换并自定义它?

iphone - 按下 UIBarButton 时 UIAction 表不会消失

ios - 如何在 .plist 文件中注释行?

swift - 操作 alpha 属性与添加/删除节点

ios - 只要网络可用就发送数据

cocoa-touch - 从 cocoa http获取请求中提取数据

iphone - 通过脚本运行模拟器构建

ios - 解包可选值 KeyboardWillShow 时意外发现 nil