亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

iOS Touch ID 身份認證

發布時間:2020-09-13 14:22:57 來源:腳本之家 閱讀:195 作者:Silence_cnblogs 欄目:移動開發

iOS Touch ID 身份認證

iOS 8 及以后錄了指紋的設備可以使用 touch ID 進行身份認證,指紋符合錄入的指紋才能認證成功。

步驟

  1. 導入 LocalAuthentication 框架:import LocalAuthentication
  2. 初始化 LAContext 對象:let context = LAContext()
  3. 調用 LAContext 對象的 canEvaluatePolicy(_ policy: LAPolicy, error: NSErrorPointer) -> Bool方法
  4. 上一步如果返回 false,表示不能進行認證,執行相應的失敗操作;如果返回 true,調用 LAContext 對象的evaluatePolicy(_ policy: LAPolicy, localizedReason: String, reply: @escaping (Bool, Error?) -> Void)方法,在 reply 中判斷是否認證成功來執行相應的操作(如果認證失敗,可以獲取錯誤碼 code,看看屬于 LAError.Code 的哪種類型錯誤來執行相應的失敗操作)

調用 LAContext 對象的 canEvaluatePolicy 和 evaluatePolicy 方法都要傳入 LAPolicy 枚舉類型的值,目前有兩種取值:deviceOwnerAuthenticationWithBiometrics 和 deviceOwnerAuthentication。前一種 deviceOwnerAuthenticationWithBiometrics 是進行指紋認證。后一種 deviceOwnerAuthentication 是 iOS 9.0 及以后才能使用,先進行指紋認證,如果指紋認證失敗可以通過輸入密碼進行認證。

調用 LAContext 對象的 evaluatePolicy 方法會彈出指紋認證對話框。對話框會顯示需要進行認證的原因(String),就是 localizedReason 參數的值。對話框有取消按鈕,iOS 10.0 及以后可以設置 LAContext 對象的 localizedCancelTitle 的值來改變取消按鈕顯示的字。如果指紋認證失敗,對話框還會顯示 fallback 按鈕,可以設置 LAContext 對象的 localizedFallbackTitle 的值來改變 fallback 按鈕顯示的字。

需要注意,evaluatePolicy 方法的 reply 回調不在主線程。如果需要更新 UI 的話,要調用主線程再更新。

代碼示例

代碼已上傳GitHub:https://github.com/Silence-GitHub/TouchIDDemo

在控制器中放置一個 label 顯示認證返回結果。

指紋認證代碼

let context = LAContext()
context.localizedFallbackTitle = "Fall back button"
if #available(iOS 10.0, *) {
 context.localizedCancelTitle = "Cancel button"
}
var authError: NSError?
if context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &authError) {
 context.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason: "Localized reason for authentication with biometrics", reply: { (success, evaluateError) in
 // NOT in main thread
 DispatchQueue.main.async {
 if success {
 self.label.text = "Success"
 // Do something success
 } else if let error = evaluateError {
 self.label.text = error.localizedDescription
 // Deal with error
 if let code = LAError.Code(rawValue: (error as NSError).code) {
  switch code {
  case .userFallback:
  print("fall back button clicked")
  default:
  break
  }
 }
 }
 } 
 })
} else if let error = authError {
 label.text = error.localizedDescription
 // Deal with error
}

指紋和密碼認證代碼

if #available(iOS 9.0, *) {
 let context = LAContext()
 context.localizedFallbackTitle = "Fall back button"
 if #available(iOS 10.0, *) {
 context.localizedCancelTitle = "Cancel button"
 }
 var authError: NSError?
 if context.canEvaluatePolicy(.deviceOwnerAuthentication, error: &authError) {
 context.evaluatePolicy(.deviceOwnerAuthentication, localizedReason: "Localized reason for authentication", reply: { (success, evaluateError) in
 // NOT in main thread
 DispatchQueue.main.async {
 if success {
  self.label.text = "Success"
  // Do something success
 } else if let error = evaluateError {
  self.label.text = error.localizedDescription
  // When fall back button clicked, user is required to enter PIN. Error code will not be "userFallback"
  // Deal with error
 }
 }
 })
 } else if let error = authError {
 label.text = error.localizedDescription 
 // Deal with error
 }
} else {
 let alert = UIAlertController(title: nil, message: "Authentication is available on iOS 9.0 or later", preferredStyle: .alert)
 alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
 present(alert, animated: true, completion: nil)
}

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持億速云!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

深州市| 额济纳旗| 日照市| 西昌市| 确山县| 蓬安县| 岱山县| 肃南| 遵化市| 略阳县| 明光市| 平乡县| 会东县| 阿荣旗| 宿松县| 南丹县| 汉阴县| 景泰县| 繁昌县| 禹州市| 平和县| 罗定市| 姚安县| 阿拉尔市| 隆德县| 沙湾县| 崇州市| 宜昌市| 新巴尔虎左旗| 灯塔市| 波密县| 南澳县| 太康县| 河曲县| 柞水县| 海宁市| 阿拉善左旗| 汉沽区| 柳江县| 高陵县| 峨山|