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指纹识别的详细攻略及实例代码。

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

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

相关文章

  • sqlserver行转列(pivot) 列转行(unpivot)总结

    SQL Server 行转列(Pivot)和列转行(Unpivot)总结 在SQL Server中,有时需要将一些行数据转换成列数据的方式呈现,或者将列数据转换成行数据的方式呈现,这就需要使用行转列和列转行的功能。 行转列(Pivot) 行转列是将多行数据转换成一行数据,对于这种需求,我们可以使用PIVOT函数。PIVOT函数将行数据转换成列数据,我们需要指…

    其他 2023年3月28日
    00
  • Python封装解构以及丢弃变量

    Python封装解构以及丢弃变量 在 Python 中,我们可以使用封装和解构的方式对数据进行操作,同时也可以使用丢弃变量的方式来忽略数据中不需要的部分。 封装 封装可以将多个值打包成一个整体,常用的打包方式包括元组和列表。例如,我们可以将多个数值封装在元组中: >>> nums = (1, 2, 3) >>> print…

    other 2023年6月25日
    00
  • iOS9 beta2固件下载 苹果iOS9 beta2官方固件下载地址大全

    iOS9 beta2固件下载攻略 苹果的iOS9 beta2固件是开发者预览版,提供给开发者测试和调试他们的应用程序。以下是详细的iOS9 beta2固件下载攻略,包括官方固件下载地址大全和示例说明。 步骤一:准备工作 在开始下载iOS9 beta2固件之前,请确保您已经完成以下准备工作: 注册为苹果开发者:您需要成为苹果开发者才能下载iOS9 beta2固…

    other 2023年8月4日
    00
  • ASP创建对象的两种方法比较

    以下是使用标准的Markdown格式文本,详细讲解ASP创建对象的两种方法比较的完整攻略: ASP创建对象的两种方法比较 在ASP中,我们可以使用两种方法来创建对象:使用CreateObject函数和使用Server.CreateObject方法。这两种方法都可以用于创建COM组件、ActiveX对象和ASP组件。 1. 使用CreateObject函数 C…

    other 2023年10月14日
    00
  • win10英雄联盟图形设备初始化失败怎么办?

    怎样解决“Win10英雄联盟图形设备初始化失败”? 如果您在运行英雄联盟游戏时遇到了“图形设备初始化失败”的错误提示,那么您可以按照以下步骤进行操作。 检查显卡驱动程序 首先,您需要确保您的电脑上已安装最新的显卡驱动程序,因为很多时候这个错误是由过时的、已损坏的或错误的显卡驱动程序引起的。您可以按以下步骤操作以更新您的显卡驱动程序: 打开您的电脑的设备管理器…

    other 2023年6月20日
    00
  • 详解Go module的介绍及使用

    详解Go module的介绍及使用 Go module是Go语言1.11版本引入的一种包管理机制,用于解决Go语言项目中的依赖管理问题。它可以帮助开发者更好地管理项目的依赖关系,并提供了一种简单、可靠的方式来构建和发布可复用的代码。 什么是Go module Go module是一种用于管理Go语言项目依赖关系的工具。它通过在项目根目录下创建一个go.mod…

    other 2023年8月3日
    00
  • 深入理解linux内存分配

    深入理解Linux内存分配 在Linux系统中,内存管理是一个非常重要的领域。特别是在大型应用和高负载环境下,准确、高效和可靠的内存管理是确保系统稳定性和高性能的关键。本文将深入介绍Linux内存分配机制,帮助读者了解内存分配的重要性和机制,以便优化系统性能并解决内存问题。 内存分配基础概念 在Linux中,所有的内存分配都可以分为以下几种类型: 静态内存分…

    其他 2023年3月28日
    00
  • iOS消息推送原理及具体实现代码

    iOS消息推送原理及具体实现代码 1. 原理概述 iOS消息推送(Push Notification)是指通过苹果提供的APNS(Apple Push Notification Service)服务,向用户设备发送消息的一种技术。其主要原理是:应用程序通过向APNS发送推送请求,APNS将推送请求发送到用户设备上的iOS系统,然后iOS系统将推送消息发送到应…

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