iOS_TouchID使用Demo

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
  }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章