iOS_指纹识别

语言:swift4.2
Xcode版本:10.1

demo地址:

https://github.com/colourfulStar/FingerprintAuthenticationSample

逻辑流程:

逻辑图.png

核心代码:

func checkTouchID() {
        let desc = self.autoCheck ? "请校验指纹" : (TouchIDHelper.sharedInstance.isOpen() ? "关闭指纹认证" : "开启指纹认证")
        ETouchID().eTouch_show(withDescribe:desc) { (state, error) in
            if state == ETouchIDState.notSupport {
                //设备不支持指纹
                self.dismiss(animated: true, completion: nil)
                ALToastView.toast(in: self.view, withText: "当前设备不支持指纹")
                
            } else if state == ETouchIDState.success {
                //验证成功
                if self.autoCheck {
                    self.touchIDSwitch.setOn(true, animated: true)
                    TouchIDHelper.sharedInstance.setState(TouchIDHelper.TouchIDState.open)
                    self.dismiss(animated: true, completion: nil)
                } else {
                    self.touchIDSwitch.setOn(!TouchIDHelper.sharedInstance.isOpen(), animated: true)
                    TouchIDHelper.sharedInstance.setState(TouchIDHelper.sharedInstance.isOpen() ? TouchIDHelper.TouchIDState.support : TouchIDHelper.TouchIDState.open)
                }
                ALToastView.toast(in: self.view, withText: "成功")
                
            } else if state == ETouchIDState.inputPassword {
                //用户选择手动输入密码
            } else if state == ETouchIDState.touchIDNotSet {
                //用户未设置指纹,提醒跳转至系统设置界面
                self.touchIDNotSetAlert()
                
            } else if state == ETouchIDState.touchIDNotAvailable {
                //touchID无效
            } else if state == ETouchIDState.touchIDLockout {
                //多次指纹校验失败,touchID被锁定
                self.touchIDLockOutAlert()
                
            } else if state == ETouchIDState.fail {
                //指纹认证尝试3次,失败
                self.touchIDFailAlert()
                
            } else if state == ETouchIDState.userCancel {
                //TouchID被用户手动取消
                self.touchIDSwitch.setOn(TouchIDHelper.sharedInstance.isOpen(), animated: true)
                if self.autoCheck {
                    if TouchIDHelper.sharedInstance.isSupport() {
                        self.dismiss(animated: true, completion: nil)
                    } else {
                        self.logout()
                    }
                }
                
            } else if state == ETouchIDState.systemCancel {
                //被系统取消
            } else {
                //其他问题
            }
        }
    }

项目说明:

  1. TouchIDViewController 【指纹认证业务控制器类】

  2. TouchIDHelper 【指纹认证帮助类】
    1)管理指纹认证状态:
    不支持指纹(unsupport),支持指纹(support),已开启指纹(open)。
    2)管理是否需要提示用户进行指纹认证:
    逻辑:用户第一次打开app,提示绑定指纹。当用户选择不绑定时,以后每个自然周提醒一次。当前默认每次都提示(line68~78,已注释,如果需要此逻辑,取消注释即可)
    3)管理指纹认证页面打开方式:
    当点击“我的”tab时,被动验证指纹。当点击“我的”界面内的指纹认证按钮时,主动验证指纹

  3. Helper 【辅助类】
    1)ETouchID 指纹工具类
    2)Storage 存储类
    3)TimeToken 时间类

你可能感兴趣的:(iOS_指纹识别)