亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

iOS Touch ID 身份認證

 更新時間:2017年02月15日 15:46:24   作者:Silence_cnblogs  
本文主要介紹了iOS Touch ID 身份認證的相關(guān)知識。具有很好的參考價值,下面跟著小編一起來看下吧

iOS Touch ID 身份認證

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

步驟

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

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

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

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

代碼示例

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

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

指紋認證代碼

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

以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!

相關(guān)文章

  • Flutter Widgets粘合劑CustomScrollView NestedScrollView滾動控件

    Flutter Widgets粘合劑CustomScrollView NestedScrollVie

    這篇文章主要為大家介紹了Flutter Widgets粘合劑CustomScrollView NestedScrollView滾動控件示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • iOS開發(fā)之如何通過PUT請求上傳數(shù)據(jù)

    iOS開發(fā)之如何通過PUT請求上傳數(shù)據(jù)

    眾所周知一般的服務(wù)器上傳數(shù)據(jù)都是用POST請求,這樣通過AFNetworking的POST請求穩(wěn)穩(wěn)的,但是有一天遇到一個問題,服務(wù)器上傳數(shù)據(jù)用的是PUT請求,發(fā)現(xiàn)用AFNetworking并不是那么好用,下面這篇文章就來講一下如何通過PUT請求上傳數(shù)據(jù)。有需要的朋友們可以參考借鑒。
    2016-11-11
  • iOS開發(fā)中實現(xiàn)hook消息機制的方法探究

    iOS開發(fā)中實現(xiàn)hook消息機制的方法探究

    這篇文章主要介紹了iOS開發(fā)中實現(xiàn)hook消息機制的方法探究,這里用到了一個Method Swizzling原理,需要的朋友可以參考下
    2015-10-10
  • 深入學(xué)習(xí)iOS7自定義導(dǎo)航轉(zhuǎn)場動畫

    深入學(xué)習(xí)iOS7自定義導(dǎo)航轉(zhuǎn)場動畫

    這篇文章主要為大家詳細介紹了iOS7自定義導(dǎo)航轉(zhuǎn)場動畫的相關(guān)資料,感興趣的小伙伴們可以參考一下
    2016-02-02
  • iOS?xcconfig編寫示例教程

    iOS?xcconfig編寫示例教程

    這篇文章主要為大家介紹了iOS?xcconfig編寫示例教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • 在iOS中實現(xiàn)谷歌滅霸彩蛋的完整示例

    在iOS中實現(xiàn)谷歌滅霸彩蛋的完整示例

    這篇文章主要給大家介紹了關(guān)于如何在iOS中實現(xiàn)谷歌滅霸彩蛋的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對各位iOS開發(fā)者們具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • iOS實時監(jiān)控網(wǎng)絡(luò)狀態(tài)的改變

    iOS實時監(jiān)控網(wǎng)絡(luò)狀態(tài)的改變

    這篇文章主要為大家詳細介紹了iOS實時監(jiān)控網(wǎng)絡(luò)狀態(tài)的改變的相關(guān)資料,感興趣的小伙伴們可以參考一下
    2016-08-08
  • iOS開發(fā)技巧之狀態(tài)欄字體顏色的設(shè)置方法

    iOS開發(fā)技巧之狀態(tài)欄字體顏色的設(shè)置方法

    有時候我們需要根據(jù)不同的背景修改狀態(tài)欄字體的顏色,下面這篇文章主要給大家介紹了關(guān)于iOS開發(fā)技巧之狀態(tài)欄字體顏色的設(shè)置方法,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧
    2018-08-08
  • ios開發(fā)加載webview顯示進度條實例

    ios開發(fā)加載webview顯示進度條實例

    本篇文章主要介紹了ios開發(fā)加載webview顯示進度條實例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • 在iOS應(yīng)用中使用UIWebView創(chuàng)建簡單的網(wǎng)頁瀏覽器界面

    在iOS應(yīng)用中使用UIWebView創(chuàng)建簡單的網(wǎng)頁瀏覽器界面

    這篇文章主要介紹了在iOS應(yīng)用中使用UIWebView創(chuàng)建簡單的網(wǎng)頁瀏覽器界面的方法,包括動態(tài)獲取UIWebView高度的實現(xiàn),需要的朋友可以參考下
    2016-01-01

最新評論