美文网首页
iOS 填坑之Touch ID与Face ID

iOS 填坑之Touch ID与Face ID

作者: CarsonChen | 来源:发表于2017-11-15 18:07 被阅读584次

    一、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

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