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>