最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

iOS Touch ID 身份認(rèn)證

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

iOS Touch ID 身份認(rèn)證

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

步驟

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

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

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

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

代碼示例

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

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

指紋認(rèn)證代碼

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
}

指紋和密碼認(rèn)證代碼

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)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時(shí)也希望多多支持腳本之家!

相關(guān)文章

  • iOS實(shí)現(xiàn)富文本編輯器的方法詳解

    iOS實(shí)現(xiàn)富文本編輯器的方法詳解

    大家在開發(fā)的時(shí)候經(jīng)常會(huì)用到富文本編輯器,所以這篇文章就給大家整理了如何使用iOS實(shí)現(xiàn)富文本編輯器的方法,相信本文對(duì)大家具有一定的參考借鑒價(jià)值,有需要的朋友們可以一起來看看。
    2016-10-10
  • iOS開發(fā)之WKWebViewJavascriptBridge Xcode9中導(dǎo)致crash的解決

    iOS開發(fā)之WKWebViewJavascriptBridge Xcode9中導(dǎo)致crash的解決

    大家都知道WebViewJavascriptBridge它主要幫助我們優(yōu)雅的實(shí)現(xiàn)OC與JS的交互,下面這篇文章主要給大家介紹了關(guān)于iOS開發(fā)之WKWebViewJavascriptBridge Xcode9中導(dǎo)致crash的解決方法,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-10-10
  • iOS?block的值捕獲與指針捕獲詳解

    iOS?block的值捕獲與指針捕獲詳解

    Block它是C語言級(jí)別和運(yùn)行時(shí)方面的一個(gè)特征,下面這篇文章主要給大家介紹了關(guān)于iOS?block的值捕獲與指針捕獲的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-02-02
  • iOS Objective-c實(shí)現(xiàn)左右滑動(dòng)切換頁面

    iOS Objective-c實(shí)現(xiàn)左右滑動(dòng)切換頁面

    這篇文章主要為大家詳細(xì)介紹了iOS Objective-c實(shí)現(xiàn)左右滑動(dòng)切換頁面,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • iOS開發(fā)中實(shí)現(xiàn)hook消息機(jī)制的方法探究

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

    這篇文章主要介紹了iOS開發(fā)中實(shí)現(xiàn)hook消息機(jī)制的方法探究,這里用到了一個(gè)Method Swizzling原理,需要的朋友可以參考下
    2015-10-10
  • Xcode使用教程詳細(xì)講解(全)

    Xcode使用教程詳細(xì)講解(全)

    本文介紹的是Xcode使用教程詳細(xì)講解,Xcode是一個(gè)款強(qiáng)大的IDE開發(fā)環(huán)境,就像你在寫Windows程序時(shí)需要VS2005一樣 需要要Xcode為你寫Mac程序提供環(huán)境
    2015-07-07
  • 舉例講解Objective-C中@property屬性的用法

    舉例講解Objective-C中@property屬性的用法

    這篇文章主要介紹了Objective-C中@property屬性的用法,包括@property的屬性關(guān)鍵字的整理,需要的朋友可以參考下
    2016-03-03
  • iOS利用Runtime實(shí)現(xiàn)友盟頁面數(shù)據(jù)統(tǒng)計(jì)的功能示例

    iOS利用Runtime實(shí)現(xiàn)友盟頁面數(shù)據(jù)統(tǒng)計(jì)的功能示例

    這篇文章主要給大家介紹了關(guān)于iOS利用Runtime實(shí)現(xiàn)友盟頁面數(shù)據(jù)統(tǒng)計(jì)功能的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-01-01
  • iOS中的NSTimer定時(shí)器的初步使用解析

    iOS中的NSTimer定時(shí)器的初步使用解析

    這篇文章主要介紹了iOS中的NSTimer定時(shí)器的初步使用解析,通過例子簡單講解了NSTimer的輸出與停止的方法,需要的朋友可以參考下
    2016-05-05
  • IOS中自定義類中限制使用原生實(shí)例化方法

    IOS中自定義類中限制使用原生實(shí)例化方法

    這篇文章主要介紹了IOS中自定義類中限制使用原生實(shí)例化方法的相關(guān)資料,需要的朋友可以參考下
    2017-09-09

最新評(píng)論

鄱阳县| 衡阳县| 来宾市| 蒙山县| 三原县| 彩票| 唐海县| 阿城市| 安达市| 玉门市| 徐闻县| 余干县| 洪洞县| 绿春县| 石阡县| 常熟市| 镇远县| 洞口县| 五台县| 淮滨县| 崇明县| 和平县| 乐东| 都匀市| 巴彦淖尔市| 华安县| 鲁甸县| 婺源县| 灵山县| 城固县| 新宁县| 措美县| 东山县| 从化市| 水富县| 石柱| 巴林左旗| 保靖县| 旬阳县| 莎车县| 永嘉县|