iOS指纹解锁Swift

35 篇文章 0 订阅
7 篇文章 0 订阅

几行代码,很简单
上代码

//新建一个NSObject
import Foundation
import LocalAuthentication

class MyFinger: NSObject {
    @objc
    enum XWCheckResult: NSInteger {
        case success             //成功
        case failed              //失败
        case passwordNotSet      //未设置手机密码
        case touchidNotSet       //未设置指纹
        case touchidNotAvailable //不支持指纹
        case cancleSys           //系统取消
        case canclePer           //用户取消
        case inputNUm            //输入密码
    }


    static func userFigerprintAuthenticationTipStr(withtips tips:String, block : @escaping (_ result :XWCheckResult) -> Void){
           if #available(iOS 8.0, OSX 10.12, *) { //IOS 版本判断 低于版本无需调用
            let context = LAContext()//创建一个上下文对象
            var error: NSError? = nil//捕获异常
            if(context.canEvaluatePolicy(LAPolicy.deviceOwnerAuthenticationWithBiometrics, error: &error)){//判断当前设备是否支持指纹解锁
                //指纹解锁开始啦
                context.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason:tips, reply: { (success, error) in
                    if(success){
                        //进行UI操作
                        print("操作吧");
                    }else{
                        let laerror = error as! LAError
                        switch laerror.code {
                        case LAError.authenticationFailed:
                            print("连续三次输入错误,身份验证失败。")
                            block(XWCheckResult.failed)
                            break
                        case LAError.userCancel:
                            print("用户点击取消按钮。")
                            block(XWCheckResult.canclePer)
                            break
                        case LAError.userFallback:
                            print("用户点击输入密码。")
                            block(XWCheckResult.inputNUm)
                            break
                        case LAError.systemCancel:
                            print("系统取消")
                            block(XWCheckResult.cancleSys)
                            break
                        case LAError.passcodeNotSet:
                            print("用户未设置密码")
                            block(XWCheckResult.passwordNotSet)
                            break
                        case LAError.touchIDNotAvailable:
                            print("touchID不可用")
                            block(XWCheckResult.touchidNotAvailable)
                            break
                        case LAError.touchIDNotEnrolled:
                            print("touchID未设置指纹")
                            block(XWCheckResult.touchidNotSet)
                            break
                        default: break
                        }
                    }
                })

            }else{

                print("不支持");
            }
        }
    }
}

在你需要的地方调用就可以了

 func verify(){

        MyFinger.userFigerprintAuthenticationTipStr(withtips:"验证指纹") { (result:MyFinger.XWCheckResult) in
            switch result{
            case .success://情况没写全,需要的自己去看,我都列出来了
                print("用户解锁成功")
                break
            case .failed:
                print("用户解锁失败")
                break
            case .passwordNotSet:
                print("未设置密码")
                break
            case .touchidNotSet:
                print("未设置指纹")
                break
            case .touchidNotAvailable:
                print("系统不支持")
                break
            default:
                break

            }

        }

    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值