美文网首页
FaceID、TouchID 的使用

FaceID、TouchID 的使用

作者: 小王在努力 | 来源:发表于2020-10-26 09:54 被阅读0次

1、引入头文件

import LocalAuthentication

2、声明一个枚举

enum  TouchIdCase: Int {
    case success
    case failure
    case passwordNoSet
    case touchIdNoSet
    case touchIdNoAvailable
    case systemCancle
    case userCancel
    case inputPassword
}

3、代码的实现

class func touchId(toast : String, completion : @escaping (_ result :TouchIdCase) -> Void) {
            if #available(iOS 8.0, OSX 10.12, *) {
                let context = LAContext()
                var error: NSError? = nil
                if(context.canEvaluatePolicy(LAPolicy.deviceOwnerAuthenticationWithBiometrics, error: &error)) {
                    context.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason:toast, reply: { (success, error) in
                        DispatchQueue.main.async {
                            if(success) {
                                completion(.success)
                            } else {
                                let laError = error as! LAError
                                errorData(laError: laError, completion: completion)
                            }
                        }
                    })
                } else {
                    let laError = error as! LAError
                    errorData(laError: laError, completion: completion)
                }
            }
        }
    class func errorData(laError : LAError, completion : @escaping (_ result :TouchIdCase) -> Void){
        switch laError.code {
        case LAError.authenticationFailed:
            completion(.failure)
            break
        case LAError.userCancel:
            completion(.userCancel)
            break
        case LAError.userFallback:
            completion(.inputPassword)
            break
        case LAError.systemCancel:
            completion(.systemCancle)
            break
        case LAError.passcodeNotSet:
            completion(.passwordNoSet)
            break
        case LAError.touchIDNotAvailable:
            completion(.touchIdNoAvailable)
            break
        case LAError.touchIDNotEnrolled:
            completion(.touchIdNoAvailable)
            break
        default: break
        }
    }

4、注意

 a、deviceOwnerAuthenticationWithBiometrics是支持iOS8以上系统,使用该设备的TouchID进行验证,当输入TouchID验证5次失败后,TouchID被锁定,只能通过锁屏后解锁设备时输入正确的解锁密码来解锁TouchID。
  b、 deviceOwnerAuthentication 是支持iOS9以上系统,使用该设备的TouchID或设备密码进行验证,当输入TouchID验证5次失败后,TouchID被锁定,会触发设备密码页面进行验证。

相关文章

网友评论

      本文标题:FaceID、TouchID 的使用

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