TouchID简单demo

基于swift3.0的TouchID简单应用

TouchID需要用到LocalAuthentication.framework这个框架,使用时要实例化LAContext这个类,用法也很简单。首先,调用open func canEvaluatePolicy(_ policy: LAPolicy, error: NSErrorPointer) -> Bool这个方法来判断是否能够启用TouchID,如果返回值为true,则调用open func evaluatePolicy(_ policy: LAPolicy, localizedReason: String, reply: @escaping (Bool, Error?) -> Swift.Void)这个方法就可以使用TouchID。在闭包里面可以获取到是否成功解锁,如果没解锁的话可以通过Error来拿到失败原因。相关代码如下所示:

        let context = LAContext()
        var requestError: NSError? = nil
        let canUseLa = context.canEvaluatePolicy(LAPolicy.deviceOwnerAuthenticationWithBiometrics, error: &requestError)
        let reasionStr = "Just do it"
        if canUseLa {
            context.evaluatePolicy(LAPolicy.deviceOwnerAuthenticationWithBiometrics, localizedReason: reasionStr, reply: { (success, error) in
                if success {
                    print("deviceOwnerAuthenticationWithBiometrics")
                }else {
                    if let error1 = (error as? NSError) {
                        switch error1.code {
                        case LAError.userCancel.rawValue:
                            print("用户取消")
                        case LAError.userFallback.rawValue:
                            print("用户输入密码")
                        case LAError.systemCancel.rawValue:
                            print("系统取消")
                        default:
                            break
                        }
                    }
                }
            })
        }else {
            switch requestError!.code {
            case LAError.touchIDNotEnrolled.rawValue:
                print("touchId")
            default:
                break
            }
        }

这个理需要提一下的是,闭包返回的错误为Error类型的,因此如果想通过code这个参数来区别错误类型的话需要先把Error as成NSError类型的。至于具体的错误类型和详细的错误信息大家可以查看LAError这个枚举值。
用户也可以通过LAContext类的localizedFallbackTitlelocalizedCancelTitle这两个属性来自定义TouchID弹窗界面下面的“取消”和“输入密码”这两个按钮的title,不过localizedCancelTitle这个参数要iOS10才能够使用

最后附上简单的demo:TouchIDDemo

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1、随机数 不需要随机数种子 arc4random()%N + begin:产生begin~begin+N的随机数...
    我是小胡胡123阅读 9,788评论 0 2
  • 1、范型范型所解决的问题 函数、方法、类型:类,结构体,枚举,元组类型,协议参数,返回值,成员函数参数,成员属性类...
    我是小胡胡123阅读 4,365评论 0 1
  • SwiftDay011.MySwiftimport UIKitprintln("Hello Swift!")var...
    smile丽语阅读 9,401评论 0 6
  • 86.复合 Cases 共享相同代码块的多个switch 分支 分支可以合并, 写在分支后用逗号分开。如果任何模式...
    无沣阅读 5,349评论 1 5
  • 初学彩铅画,面对五花八门的彩铅品牌,确实难选。我把自己选笔的经验分享一下。 最开始,是个小白,我也用过国产其他品牌...
    阁的画本阅读 10,639评论 82 144

友情链接更多精彩内容