美文网首页
iOS-swfit 指纹验证

iOS-swfit 指纹验证

作者: Cary9396 | 来源:发表于2018-08-28 10:28 被阅读0次

    今天来说一下swfit版本系统的指纹调用,稍微封装了一下。 直接上代码:

    import UIKit
    import LocalAuthentication
    
    enum CATouchIDState {
        
        case NotSupport  //当前设备不支持TouchID
        case Success  //TouchID 验证成功
        case Fail  //TouchID 验证失败
        case UserCancel  //TouchID 被用户手动取消
        case InputPassword  //用户不使用TouchID,选择手动输入密码
        case SystemCancel  //TouchID 被系统取消 (如遇到来电,锁屏,按了Home键等)
        case PasswordNotSet  //TouchID 无法启动,因为用户没有设置密码
        case TouchIDNotSet  //TouchID 无法启动,因为用户没有设置TouchID
        case TouchIDNotAvailable  //TouchID 无效
        case TouchIDLockout  //TouchID 被锁定(连续多次验证TouchID失败,系统需要用户手动输入密码)
        case AppCancel  //当前软件被挂起并取消了授权 (如App进入了后台等)
        case InvalidContext  //当前软件被挂起并取消了授权 (LAContext对象无效)
        case VersionNotSupport  //系统版本不支持TouchID (必须高于iOS 8.0才能使用)
        
    }
    
    class CATouchID: LAContext {
        
       
        func showTouchID(desc:String,closure:@escaping (CATouchIDState)->Void) {
            
            
            if NSFoundationVersionNumber < NSFoundationVersionNumber_iOS_8_0 {
                
                closure(.NotSupport)
                print("系统版本不支持TouchID (必须高于iOS 8.0才能使用)")
            
                return
            }
            let context = LAContext()
            var error:NSError?
            context.localizedFallbackTitle = desc
            if context.canEvaluatePolicy(LAPolicy(rawValue: LAPolicy.RawValue(kLAPolicyDeviceOwnerAuthenticationWithBiometrics))!, error: &error) {
                context.evaluatePolicy(LAPolicy(rawValue: LAPolicy.RawValue(kLAPolicyDeviceOwnerAuthenticationWithBiometrics))!, localizedReason: desc == "" ? "通过Home键验证已有指纹":desc) { (success, error) in
                    if success {
                        
                        closure(.Success)
                        print("TouchID 验证成功")
                        
                    }
                    else if error != nil {
                        
                        let err = error as! LAError
                        
                        switch err.code {
                            
                        case .authenticationFailed:
                            print("TouchID 验证失败")
                            closure(.Fail)
                        case .userCancel:
                            print("TouchID 被用户手动取消")
                            closure(.UserCancel)
                        case .userFallback:
                            print("用户不使用TouchID,选择手动输入密码")
                            closure(.InputPassword)
                        case .systemCancel:
                            print("TouchID 被系统取消 (如遇到来电,锁屏,按了Home键等)")
                            closure(.SystemCancel)
                        case .passcodeNotSet:
                            print("TouchID 无法启动,因为用户没有设置密码")
                            closure(.PasswordNotSet)
                        case .touchIDNotEnrolled:
                            print("TouchID 无法启动,因为用户没有设置TouchID")
                            closure(.TouchIDNotSet)
                        case .touchIDNotAvailable:
                            print("TouchID 无效")
                            closure(.TouchIDNotAvailable)
                        case .touchIDLockout:
                            print("TouchID 被锁定(连续多次验证TouchID失败,系统需要用户手动输入密码)")
                            closure(.TouchIDLockout)
                        case .appCancel:
                            print("当前软件被挂起并取消了授权 (如App进入了后台等)")
                            closure(.AppCancel)
                        case .invalidContext:
                            print("当前软件被挂起并取消了授权 (LAContext对象无效)")
                            closure(.InvalidContext)
                        default:
                            break
                        }
                    }
                }
            }
            else {
                
                print("当前设备不支持TouchID")
                closure(.NotSupport)
                
            }
        }
        
    }
    
    

    调用的时候:

      let touchID = CATouchID()
      touchID.showTouchID(desc: "") { (result) in
                
            }
    

    相关文章

      网友评论

          本文标题:iOS-swfit 指纹验证

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