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

 

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