iOS 填坑之Touch ID与Face ID

一、Touch ID

2013年随iPhone 5s面世,Apple开启了,Touch ID解锁在移动终端上的使用,与之相随的就是各大厂家进行的模仿。

代码如下

            let context = LAContext.init()
            var error:NSError?
            var current_policy:LAPolicy?
            if #available(iOS 9.0, *) {
                current_policy = LAPolicy.deviceOwnerAuthentication
            } else {
                current_policy = LAPolicy.deviceOwnerAuthenticationWithBiometrics
            }
            if context.canEvaluatePolicy(current_policy!, error: &error) {
                context.evaluatePolicy(current_policy!, localizedReason: localizedReason, reply: { (success, error) in
                    if success {
                        print("通过了验证")
                    } else {
                        print("没有通过验证")
                        let flag = Int32.init(truncatingBitPattern: (error?._code)!)
                        switch flag {
                        case kLAErrorAuthenticationFailed:
                            print("连续三次出错")
                            self.errorBlock!()
                            break
                        case kLAErrorUserCancel:
                            print("点击了取消")
                            break
                        case kLAErrorPasscodeNotSet:
                            self.errorBlock!()
                            print("弹出密码输入页面")
                            break
                        case kLAErrorSystemCancel:
                            print("按下了电源键")
                            break
                        case kLAErrorTouchIDLockout:
                            print("Touch ID 锁定了")
                            break
                        default:
                            print("未知错误")
                        }
                    }
                })
            } else {
//                self.errorBlock!()
                print("弹出密码输入页面")
            }
        }

此处强调一下是
if #available(iOS 9.0, *) {
current_policy = LAPolicy.deviceOwnerAuthentication
} else {
current_policy = LAPolicy.deviceOwnerAuthenticationWithBiometrics
}
在iOS 9之后,LAPolicy使用deviceOwnerAuthentication可以当TouchID被系统锁定之后进行弹出系统解锁界面。

二、Face ID

Face ID是2017年秋季,与苹果十周年纪念版手机 iPhone X同出现的交互解锁功能呢,面容识别,为3D式识别用户Face数据。但在双胞胎识别上有Bug,此处就不加吐槽了。在iOS 11中新增了以下方法

func checkSupportMethod() -> Void {
        if #available(iOS 11.0, *) {
            if context.biometryType == LABiometryType.typeTouchID {
                print("设备支持Touch ID")
            } else if context.biometryType == LABiometryType.typeFaceID {
                print("设备支持Face ID")
            }
        } else {
        }
    }

三、总结

对于开发来说,代码完全不用进行更改,只是在UX上,交互那边,之前是Touch ID解锁而现在则更改为Face ID进行解锁。

你可能感兴趣的:(iOS 填坑之Touch ID与Face ID)