import UIKit
// 1. 導入: LocalAuthentication
import LocalAuthentication
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
touchID();
}
func touchID () {
// 2. 獲得一個上下文對象,來管理操作指紋解鎖的過程
let context = LAContext()
var error: NSError?
// 3. 判斷設備是都支持指紋識別
if context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &error) {
// 4. 開始進入識別狀態
context.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason: "請用指紋解鎖") { (success, error) in
if success {
print("識別成功");
} else {
print("識別失敗");
if let error = error as NSError? {
let message = self.errorMessageForLAErrorCode(errorCode: error.code)
print(message);
}
}
}
}
}
// 錯誤類型
func errorMessageForLAErrorCode(errorCode: Int) -> String {
var message = ""
switch errorCode {
case LAError.systemCancel.rawValue: message = "身份驗證被系統取消"
case LAError.appCancel.rawValue: message = "身份驗證被應用程序取消"
case LAError.authenticationFailed.rawValue: message = "用戶未能提供有效憑證"
case LAError.invalidContext.rawValue: message = "上下文無效"
case LAError.passcodeNotSet.rawValue: message = "設備上沒有設置密碼"
case LAError.biometryNotAvailable.rawValue: message = "TouchID在設備上是不可用的"
case LAError.biometryNotEnrolled.rawValue: message = "身份驗證無法啓動,因爲生物識別沒有登記身份"
case LAError.biometryLockout.rawValue: message = "身份驗證嘗試太多, 已被鎖定"
case LAError.userCancel.rawValue: message = "用戶取消了"
case LAError.userFallback.rawValue: message = "用戶選擇使用回退"
case LAError.notInteractive.rawValue: message = "身份驗證失敗,因爲使用interactionNotAllowed屬性禁止的UI的顯示"
default: message = "Did not find error code on LAError object"
}
return message
}
}