美文网首页
swift 2019-04-03 touchID

swift 2019-04-03 touchID

作者: Master_K | 来源:发表于2019-04-03 14:22 被阅读0次

    iOS touchID

    指纹技术是苹果2013年在iPhone5s(iOS7)上开始应用的。iOS7是不允许开发人员来使用TouchAPI来验证自己的应用程序。
    iOS8开始,苹果陆续开放了Touch ID公共API。TouchID的使用时“本地”的一个验证,框架给我们提供了提示用户进行身份验证的方法。我们可以使用它来认证登录,或授权访问安全敏感信息的应用程序。
    我们要使用的是Local Authentication framework。
    我们是直接获取TouchID来做的,很多APP都是有开关来控制,是否用TouchID来登录或者打开APP。

    import LocalAuthentication
        typealiasFKBlock2 = (_:Any) -> ()
        func touchID (_block:@escapingFKBlock2){
            let context =LAContext()
            varerror:NSError?
            if context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &error) {
                // 下面是开始指纹解锁的代码
                context.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason:"请用指纹解锁", reply: {success, errorin
                    if success {
    //                    let data = context.evaluatedPolicyDomainState;
                        // 成功之后的逻辑, 通常使用多线程来实现跳转逻辑。
                        block("ISOK")
                    }else{
                        if let error = error as NSError? {
                            // 获取错误信息
                            let message = self.errorMessageForLAErrorCode(errorCode: error.code)
                            block(message)
                        }
                    }
                })
            }else if let error = error as NSError? {
                let message =self.errorMessageForLAErrorCode(errorCode: error.code)
                block(message)
            }
        }
        func errorMessageForLAErrorCode(errorCode:Int) ->String{
            var message =""
            switcherrorCode {
            case LAError.authenticationFailed.rawValue:
                message ="TouchID 验证失败";
                break;
            case LAError.userCancel.rawValue:
                message ="TouchID 被用户手动取消";
                break;
            case LAError.userFallback.rawValue:
                message ="用户不使用TouchID,选择手动输入密码";
                break;
            case LAError.systemCancel.rawValue:
                message ="TouchID 被系统取消 (如遇到来电,锁屏,按了Home键等)";
                break;
            case LAError.passcodeNotSet.rawValue:
                message ="TouchID 无法启动,因为用户没有设置密码";
                break;
            case LAError.touchIDNotEnrolled.rawValue:
                message ="TouchID 无法启动,因为用户没有设置TouchID";
                break;
            case LAError.touchIDNotAvailable.rawValue:
                message ="TouchID 无效";
                break;
            case LAError.touchIDLockout.rawValue:
                message ="TouchID 被锁定(连续多次验证TouchID失败,系统需要用户手动输入密码)";
                break;
            case LAError.appCancel.rawValue:
                message ="当前软件被挂起并取消了授权 (如App进入了后台等)";
                break;
            case LAError.invalidContext.rawValue:
                message ="当前软件被挂起并取消了授权 (LAContext对象无效)";
            default:
                message ="未在LAError对象上找到错误代码"
            }
            returnmessage
        }

    相关文章

      网友评论

          本文标题:swift 2019-04-03 touchID

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