美文网首页
Use TouchID FaceID in iOS11

Use TouchID FaceID in iOS11

作者: xx11dragon | 来源:发表于2017-11-07 22:05 被阅读0次

    LocalAuthentication

    Request authentication from users through passphrases or biometrics(通过密码或生物识别认证用户身份).


    概述

    生物识别是使用TouchID和FaceID来验证用户身份。生物识别支持iPhone5s以后机型,支持iOS8.0+。

    引用:官方文档


    Classes

    1.LAPolicy Enum

    LAPolicy是生物识别的两种验证方式

    case deviceOwnerAuthentication 如果生物识别验证失败可使用密码验证用户 iOS9.0+
    case deviceOwnerAuthenticationWithBiometrics 只通过生物识别验证用户 iOS 8.0+

    2.LAError Struct

    LAError 验证的错误对象,用于对应错误

    错误码枚举

    public enum Code : Int {
            case authenticationFailed               //  TouchID或者FaceID身份验证失败
            case userCancel                         //  用户点击了取消按钮
            case userFallback                       //  用户点击了输入密码
            case systemCancel                       //  被系统取消,另一个应用进去前台
            case passcodeNotSet                     //  没设密码
            case appCancel                          //  被程序取消
            case invalidContext                     //  Context对象无效了
    
            case touchIDNotAvailable                //  设备不支持TouchID  iOS8引入 iOS11弃用
            case touchIDNotEnrolled                 //  用户没设置TouchID  iOS8引入  iOS11弃用
            case touchIDLockout                     //  TouchID错误次数太多被锁住  iOS8引入  iOS11弃用
            case notInteractive                     //  UI无法交互
    
            @available(iOS 11.0, *)
            public static var biometryNotAvailable  //  设备不支持生物识别 iOS11引入
            @available(iOS 11.0, *)
            public static var biometryNotEnrolled   //  用户没设置生物识别 iOS11引入
            @available(iOS 11.0, *)
            public static var biometryLockout       //  生物识别错误次数太多被锁住  iOS11引入
        }
    

    3.LAContext Class

    主要通过LAContext类的方法进行身份验证。

    判断是否可以进行用户身份验证

    func canEvaluatePolicy(_ policy: LAPolicy, error: NSErrorPointer) -> Bool
    传入LAPolicy对象设置验证方式,我们通过函数返回的Bool来判断是否可以进行验证,通过NSError来判断错误原因。

    用户身份验证

    func evaluatePolicy(_ policy: LAPolicy, localizedReason: String, reply: @escaping (Bool, Error?) -> Void)
    传入LAPolicy对象要和canEvaluatePolicy传入的保持一致,localizedReason告诉用户验证是为了什么,闭包返回了Bool来判断是否通过了验证,Error为LAError用于判断错误原因。

    其他API暂未研究后续补齐


    注意

    适配iOS11:iPhoneX有FaceID我们需要在Info.plist加入NSFaceIDUsageDescription键值,不加可能导致程序Crash。

        <key>NSFaceIDUsageDescription</key>
        <string>面容ID用于登录</string>
    

    引用:官方文档CocoaKeys

    举例

    BioMetricAuthenticatorExample

    相关文章

      网友评论

          本文标题:Use TouchID FaceID in iOS11

          本文链接:https://www.haomeiwen.com/subject/gdwjmxtx.html