美文网首页
TouchID简单demo

TouchID简单demo

作者: 陌言莫忘 | 来源:发表于2016-11-24 11:05 被阅读85次

    基于swift3.0的TouchID简单应用

    TouchID需要用到LocalAuthentication.framework这个框架,使用时要实例化LAContext这个类,用法也很简单。首先,调用open func canEvaluatePolicy(_ policy: LAPolicy, error: NSErrorPointer) -> Bool这个方法来判断是否能够启用TouchID,如果返回值为true,则调用open func evaluatePolicy(_ policy: LAPolicy, localizedReason: String, reply: @escaping (Bool, Error?) -> Swift.Void)这个方法就可以使用TouchID。在闭包里面可以获取到是否成功解锁,如果没解锁的话可以通过Error来拿到失败原因。相关代码如下所示:

            let context = LAContext()
            var requestError: NSError? = nil
            let canUseLa = context.canEvaluatePolicy(LAPolicy.deviceOwnerAuthenticationWithBiometrics, error: &requestError)
            let reasionStr = "Just do it"
            if canUseLa {
                context.evaluatePolicy(LAPolicy.deviceOwnerAuthenticationWithBiometrics, localizedReason: reasionStr, reply: { (success, error) in
                    if success {
                        print("deviceOwnerAuthenticationWithBiometrics")
                    }else {
                        if let error1 = (error as? NSError) {
                            switch error1.code {
                            case LAError.userCancel.rawValue:
                                print("用户取消")
                            case LAError.userFallback.rawValue:
                                print("用户输入密码")
                            case LAError.systemCancel.rawValue:
                                print("系统取消")
                            default:
                                break
                            }
                        }
                    }
                })
            }else {
                switch requestError!.code {
                case LAError.touchIDNotEnrolled.rawValue:
                    print("touchId")
                default:
                    break
                }
            }
    

    这个理需要提一下的是,闭包返回的错误为Error类型的,因此如果想通过code这个参数来区别错误类型的话需要先把Error as成NSError类型的。至于具体的错误类型和详细的错误信息大家可以查看LAError这个枚举值。
    用户也可以通过LAContext类的localizedFallbackTitlelocalizedCancelTitle这两个属性来自定义TouchID弹窗界面下面的“取消”和“输入密码”这两个按钮的title,不过localizedCancelTitle这个参数要iOS10才能够使用

    最后附上简单的demo:TouchIDDemo

    相关文章

      网友评论

          本文标题:TouchID简单demo

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