IOS 指纹识别详解及实例代码

IOS 指纹识别详解及实例代码

一、什么是IOS指纹识别?

指纹识别是一种生物识别技术,它通过采集用户的指纹信息,并对其进行特征提取和匹配,从而实现身份认证功能,是IOS系统的一个重要功能。

二、怎么使用IOS指纹识别?

IOS指纹识别可以通过以下步骤实现:

1.引入依赖

在Xcode的项目中,需要添加LocalAuthentication库的依赖,通过在Build Phases中的Link Binary With Libraries中添加。

2.实现代码

在需要实现指纹识别功能的地方,调用以下代码:

let context = LAContext()
var error:NSError?
if context.canEvaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics, error:&error) {
    context.evaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics, localizedReason: "解锁认证", reply: {
        (success: Bool, authenticationError: NSError?) -> Void in
            if success{
                //指纹认证成功
            }
            else{
                //指纹认证失败
            }
        })
}
else{
    //设备不支持指纹识别或指纹识别未启用
}

三、指纹识别的实例代码

以下是两个示例说明:

示例1:指纹识别

这个示例是一个简单的指纹识别应用,用于检测是否可以使用指纹识别,并在认证成功后输出结果。

func checkTouchID(){
    let touchIDcontext = LAContext()
    var error: NSError?
    if(touchIDcontext.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &error)){
        touchIDcontext.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason: "指纹识别", reply: {(success, error)->Void in DispatchQueue.main.async(execute: {
            if success{
                self.success()
            }else{
                self.failure(error: error)
            }
        })})
    }else{
        self.failure(error: error)
    }
}

示例2:指纹识别进阶

这个示例是一个指纹识别进阶应用,除了在认证成功后输出结果外,还增加了多次验证失败后跳转到密码验证的功能。

func checkTouchIDWithPassword(){
    let touchIDcontext = LAContext()
    var error: NSError?
    if(touchIDcontext.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &error)){
        touchIDcontext.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason: "指纹识别", reply: {(success, error)->Void in
            DispatchQueue.main.async(execute: {
                if success{
                    self.success()
                }else{
                    if let touchError = error as? NSError{
                        switch touchError.code{
                        case LAError.Code.systemCancel.rawValue:
                            fallthrough
                        case LAError.Code.userCancel.rawValue:
                            self.password()
                        default:
                            self.failure(error: error)
                        }
                    }
                }
            })
        })
    }else{
        self.failure(error: error)
    }
}

func password(){
    DispatchQueue.main.async(execute: {
        let alert = UIAlertController(title: "Touch ID Failed", message: "Failed", preferredStyle: .alert)
        let cancel = UIAlertAction(title: "Cancel", style: .cancel, handler: nil)
        let pass = UIAlertAction(title: "Password", style: .default, handler: {(action: UIAlertAction) -> Void in
            if let textField = alert.textFields?.first{
                if let password = textField.text{
                    self.authWithPassword(password: password)
                }
            }
        })
        alert.addTextField(configurationHandler: {(textField: UITextField)-> Void in
            textField.placeholder = "请输入密码"
            textField.isSecureTextEntry = true
        })
        alert.addAction(cancel)
        alert.addAction(pass)
        self.present(alert, animated: true, completion: nil)
    })
}

func authWithPassword(password: String){
    if password == "123456"{
        self.success()
    }else{
        self.failure(error: NSError(domain: "验证失败", code: -1, userInfo: nil))
    }
}

以上便是IOS指纹识别的详细攻略及实例代码。

阅读剩余 63%

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:IOS 指纹识别详解及实例代码 - Python技术站

(0)
上一篇 2023年6月26日
下一篇 2023年6月26日

相关文章

  • win11开机无法登陆反复重启怎么办 ?win11开机无法登陆反复重启解决方法

    针对“win11开机无法登陆反复重启”的问题,有以下几种解决方法。 方法1:重置系统 如果出现开机无法登陆的情况,我们可以尝试通过系统重置来解决问题。具体步骤如下: 进入Windows 11开机界面,点按“电源按钮”,并立即按住“Shift”键。这样会进入Windows的高级启动选项。 在高级启动选项界面,选择“疑难解答”> “重置此PC”> “…

    other 2023年6月26日
    00
  • Vue2.0 多 Tab切换组件的封装实例

    下面我将为您详细讲解“Vue2.0 多 Tab切换组件的封装实例”的完整攻略。 第一步:编写Tab组件的基本结构 首先,在编写多 Tab 切换组件之前,我们需要一些基本的结构,如: <template> <div class="tabs"> <div class="tabs-header"…

    other 2023年6月25日
    00
  • 开发人员需要知道的东西杂谈

    开发人员需要知道的东西杂谈 作为一个开发人员,除了掌握编程语言和工具之外,还需要了解一些其他的东西。这些东西可能不是很技术性的,但是它们会对你的职业生涯和工作效率有很大的帮助。在本篇文章中,我们将介绍几个开发人员需要知道的东西。 1. 版本控制 版本控制是每个开发人员都应该掌握的技能。它可以帮助你跟踪你的代码的变化,恢复到早期的版本,协作开发,以及追踪问题。…

    other 2023年6月28日
    00
  • getopts解析shell脚本命令行参数的方法

    getopts解析shell脚本命令行参数的方法 在Shell脚本中,我们通常需要处理命令行参数。使用getopts可以帮助我们轻松地解析命令行参数并进行适当的操作。 什么是getopts getopts是一个处理命令行参数的Shell内置函数。它接受多个参数,其中最重要的是两个参数:opts和name。opts参数指定期望接受的选项(即命令行参数,包括单个…

    other 2023年6月26日
    00
  • 深入解析Go 变量字符串与字符编码问题

    深入解析Go 变量字符串与字符编码问题 前言 Go是一门强类型语言,变量在使用前必须先声明,并且变量的类型必须在声明时指定。本文将深入探讨Go中的变量、字符串以及字符编码问题。 Go变量 Go变量必须先声明后使用,可以通过var关键字或:=操作符来声明变量。 var关键字 var关键字可用于声明一个或多个变量。如: var a int var b, c, d…

    other 2023年6月20日
    00
  • windows8系统账号自动登录默认设置2种方式

    Windows 8系统支持两种方式设置自动登录:本地计算机账号自动登录和Microsoft账号自动登录。下面分别详细讲解这两种方式的设置步骤。 本地计算机账号自动登录 打开“运行”对话框,方法:按下“Win + R”组合键,或者在开始菜单中搜索“运行”。 输入“netplwiz”命令并点击“确定”按钮。 在“用户账户”窗口中,取消勾选“要使用本计算机,用户必…

    other 2023年6月27日
    00
  • sap 程序之间的相互调用

    SAP 程序之间的相互调用 在 SAP 系统中,不同的程序之间需要相互调用以完成特定的业务流程。例如,一个采购订单创建的程序需要调用一个供应商管理的程序来添加或修改供应商信息。在本文中,我们将介绍 SAP 程序之间的相互调用的几种方式。 RFC 调用 RFC(Remote Function Call)是 SAP 中传输数据和功能代码的标准方法。RFC 调用可…

    其他 2023年3月28日
    00
  • java使用单向链表解决数据存储自定义排序问题

    下面我将详细讲解“Java使用单向链表解决数据存储自定义排序问题”的完整攻略。 1. 什么是单向链表 单向链表是一种常见的数据结构,它由若干个节点构成。每个节点包括两个部分,一个是存放数据信息的数据域,另一个是存储下一个节点地址的指针域。 单向链表的特点是每个节点只有一个指针域,指向下一个节点,链表的头结点没有前驱节点,尾节点没有后继节点。由此组成一条链表。…

    other 2023年6月28日
    00
合作推广
合作推广
分享本页
返回顶部