语言: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 {
//其他问题
}
}
}
项目说明:
-
TouchIDViewController 【指纹认证业务控制器类】
-
TouchIDHelper 【指纹认证帮助类】
1)管理指纹认证状态:
不支持指纹(unsupport),支持指纹(support),已开启指纹(open)。
2)管理是否需要提示用户进行指纹认证:
逻辑:用户第一次打开app,提示绑定指纹。当用户选择不绑定时,以后每个自然周提醒一次。当前默认每次都提示(line68~78,已注释,如果需要此逻辑,取消注释即可)
3)管理指纹认证页面打开方式:
当点击“我的”tab时,被动验证指纹。当点击“我的”界面内的指纹认证按钮时,主动验证指纹 -
Helper 【辅助类】
1)ETouchID 指纹工具类
2)Storage 存储类
3)TimeToken 时间类
网友评论