Use TouchID FaceID in iOS11

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。

    NSFaceIDUsageDescription
    面容ID用于登录

引用:官方文档CocoaKeys

举例

BioMetricAuthenticatorExample

你可能感兴趣的:(Use TouchID FaceID in iOS11)