美文网首页
Touch ID 开发

Touch ID 开发

作者: 冰霜海胆 | 来源:发表于2017-03-14 21:56 被阅读25次

.deviceOwnerAuthenticationWithBiometrics: 指纹识别失败后, 点击输入密码,自定义输入密码操作 (例如: 跳转到自定义的视图来让用户输入早先设置的密码)
.deviceOwnerAuthentication: 指纹识别失败后, 点击输入密码, 弹出系统自带的密码输入框(需要输入的是锁屏密码)如下图:⬇️

输入的密码第一个字符不会显示,但不影响识别

导入框架

import LocalAuthentication
fileprivate func setupAuthentication() {
        // 初始化
        let myContext = LAContext()
        
        // 弹窗说明文字
        let myLocalizedReasonString = "测试指纹识别"
        
        var authError: NSError? = nil
        
        /** 
         .deviceOwnerAuthenticationWithBiometrics: 指纹识别失败后, 自定义输入密码操作 (例如: 跳转到自定义的视图来让用户输入早先设置的密码)
         .deviceOwnerAuthentication: 指纹识别失败后, 弹出系统自带的密码输入框(需要输入的是锁屏密码)
         */
        if myContext.canEvaluatePolicy(.deviceOwnerAuthentication, error: &authError) {
            myContext.evaluatePolicy(.deviceOwnerAuthentication, localizedReason: myLocalizedReasonString, reply: { (success, evaluateError) in
                if success {
                    // 指纹识别成功, 进行下一步操作
                    print("指纹识别成功")
                } else {
                    // 指纹识别失败
                    if let evaluateError = evaluateError {
                        print("指纹识别失败 -> \(evaluateError)")
                        self.infoOf(error: evaluateError as! LAError)
                    } else {
                        print("指纹识别失败 -> 未知错误")
                    }
                }
            })
        } else {
            // 指纹识别不可用
            if let authError = authError {
                print("指纹识别不可用 -> \(authError)")
                self.infoOf(error: authError as! LAError)
            } else {
                print("指纹识别不可用 -> 未知错误")
            }
        }
    }
    
    // 捕获错误原因以及信息
    func infoOf(error: LAError) {
        switch error.code {
        case .authenticationFailed:
            print("身份验证多次失败:  因为用户未能提供有效身份证件.")
        case .userCancel:
            print("身份验证被用户取消:  (例如: 点击 [取消] 按钮).")
        case .userFallback:
            // 输入密码后续操作
            // .deviceOwnerAuthenticationWithBiometrics 模式下点击输入密码才会触发此错误
            print("身份验证被取消:  因为用户在 \"首次验证失败后\" 的 \"第二次验证中\" 点击了 [输入密码] 按钮.")
        case .systemCancel:
            print("身份验证被系统取消:  (例如: 另一个应用程序准备切换到前台).")
        case .passcodeNotSet:
            print("身份验证无法启动:  因为没有在设备上设置密码 (只有设置设备的锁屏密码, 才能开启 Touch ID).")
        case .touchIDNotAvailable:
            print("身份验证无法启动:  因为 Touch ID 不可用 (例如: Touch ID 损坏、设备没有指纹识别硬件模块...).")
        case .touchIDNotEnrolled:
            print("身份验证无法启动:  因为没有设置指纹.")
        case .touchIDLockout:
            print("身份验证失败:  因为多次尝试失败, Touch ID 被锁定, 需要通过验证锁屏密码来重新启用 Touch ID.")
        case .appCancel:
            print("身份验证被 App 取消")
        case .invalidContext:
            print("LAContext 失效.")
        }
    }

相关文章

  • Touch ID 开发

    Touch ID Touch ID是iPhone5S后加入的一项新的功能,也就是大家熟知的指纹识别技术。大家用得最...

  • Touch ID 开发

    .deviceOwnerAuthenticationWithBiometrics: 指纹识别失败后, 点击输入密...

  • iOS Touch ID 开发

    Touch ID Touch ID是iPhone5S后加入的一项新的功能,也就是大家熟知的指纹识别技术。大家用得最...

  • iOS face ID 与 Touch ID 开发

    一、Touch ID let context = LAContext.init()var error:NSErro...

  • iOS Touch ID 开发教程

    一、Touch ID 简介 iOS系统的指纹识别功能最低支持的机型为iPhone 5s,最低支持系统为iOS 8,...

  • iOS Touch ID开发记录

    由于最近的项目中用到了Touch ID,这里就给大家介绍下用法 1)首先你需要导入LocalAuthenticat...

  • iOS开发— Touch ID 简易开发教程

    依赖框架LocalAuthentication.framework#import

  • Touch ID

    1.引入LocalAuthentication.framework库,并导入头文件 2.判断设备是否支持Touch...

  • Touch ID

    } (void)authentication{LAContext * zrContext = [[LAContex...

  • Touch ID

    使用iOS 8 SDK添加Touch ID指纹识别功能 - Puzhi的专栏 - 博客频道 - CS...

网友评论

      本文标题:Touch ID 开发

      本文链接:https://www.haomeiwen.com/subject/yvhknttx.html