iOS接入锁屏密码、指纹、面容ID(FaceID) Swift以及例子代码

该文介绍了如何在iOS应用中集成LocalAuthentication库来验证用户的锁屏密码、指纹或FaceID。首先导入库,然后检查设备是否支持验证。如果支持,执行验证过程,成功则处理登录,失败则显示错误信息并提供用户名和密码的备选登录方式。文章还详细列出了各种可能的错误情况及对应的处理方法,并提供了苹果官方示例代码链接。
摘要由CSDN通过智能技术生成

App内部需要验证系统的锁屏密码或者指纹和面容ID

1、首先导入本地验证库(LocalAuthentication)

import LocalAuthentication

2、验证是否设备是否支持指纹或FaceID

context.canEvaluatePolicy(.deviceOwnerAuthentication, error: nil)

3、若支持,则开始申请验证

若验证成功,则处理成功逻辑。

验证失败,看失败的原因,进行相应处理。

var error: NSError?
if context.canEvaluatePolicy(.deviceOwnerAuthentication, error: &error) {

    let reason = "Log in to your account"
    context.evaluatePolicy(.deviceOwnerAuthentication, localizedReason: reason ) { success, error in

        if success {

            // Move to the main thread because a state update triggers UI changes.
            DispatchQueue.main.async { [unowned self] in
                self.state = .loggedin
            }

        } else {
            print(error?.localizedDescription ?? "Failed to authenticate")

            // Fall back to a asking for username and password.
            // ...
        }
    }
} else {
    print(error?.localizedDescription ?? "Can't evaluate policy")

    // Fall back to a asking for username and password.
    // ...
}

4、验证失败的原因(这个一般基本上都不会出现,所以直接都当错误处理了)

这是我自己写的错误部分,demo上并未体现。

func authFail(err: Error?) {

    if let c = err as NSError?{
        let cc = LocalAuthentication.LAError.Code.init(rawValue: c.code)
        switch(cc) {
            case LocalAuthentication.LAError.systemCancel:
                print("系统取消授权,如其他APP切入");
                break;
            case LocalAuthentication.LAError.userCancel:
                print("用户取消验证Touch ID");
                break;
            case LocalAuthentication.LAError.authenticationFailed:
                print("授权失败");
                break;
            case LocalAuthentication.LAError.passcodeNotSet:
                print("系统未设置密码");
                break;
            case LocalAuthentication.LAError.biometryNotAvailable:
                print("设备Touch ID不可用,例如未打开");
                break;
            case LocalAuthentication.LAError.biometryNotEnrolled:
                print("设备Touch ID不可用,用户未录入");
                break;
            case LocalAuthentication.LAError.userFallback:
                print("用户选择输入密码,切换主线程处理");
                break;
            default:
                print("其他情况,切换主线程处理");
                break;
        }
    }
}

5、苹果官方完整示例代码

https://download.csdn.net/download/wangkunggxx/87391697

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值