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>