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

iOS指紋登錄(TouchID)集成方案詳解

 更新時(shí)間:2018年04月20日 16:05:17   作者:軟件iOS開發(fā)  
這篇文章主要為大家詳細(xì)介紹了iOS指紋登錄TouchID的集成方案,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

TouchID指紋識別是iPhone 5S設(shè)備中增加的一項(xiàng)重大功能.蘋果的后續(xù)移動設(shè)備也相繼添加了指紋功能,在實(shí)際使用中還是相當(dāng)方便的,比如快捷登錄,快捷支付等等.系統(tǒng)提供了相應(yīng)框架,使用起來還是比較方便的.使用LAContext對象即可完成指紋識別,提高用戶體驗(yàn).

提示:指紋識別必須用真機(jī)測試,并且在iOS8以上系統(tǒng).

TouchID API使用

1.添加頭文件

#import

2.判斷系統(tǒng)版本

 //首先判斷版本
if (NSFoundationVersionNumber < NSFoundationVersionNumber_iOS_8_0) {
  NSLog(@"系統(tǒng)版本不支持TouchID");
  return;
}

3.LAPolicy

在這里簡單介紹一下LAPolicy,它是一個(gè)枚舉.我們根據(jù)自己的需要選擇LAPolicy,它提供兩個(gè)值:

LAPolicyDeviceOwnerAuthenticationWithBiometrics和LAPolicyDeviceOwnerAuthentication.

<1>. LAPolicyDeviceOwnerAuthenticationWithBiometrics是支持iOS8以上系統(tǒng),使用該設(shè)備的TouchID進(jìn)行驗(yàn)證,當(dāng)輸入TouchID驗(yàn)證5次失敗后,TouchID被鎖定,只能通過鎖屏后解鎖設(shè)備時(shí)輸入正確的解鎖密碼來解鎖TouchID。

<2>.LAPolicyDeviceOwnerAuthentication是支持iOS9以上系統(tǒng),使用該設(shè)備的TouchID或設(shè)備密碼進(jìn)行驗(yàn)證,當(dāng)輸入TouchID驗(yàn)證5次失敗后,TouchID被鎖定,會觸發(fā)設(shè)備密碼頁面進(jìn)行驗(yàn)證。

4. canEvaluatePolicy

使用canEvaluatePolicy方法判斷設(shè)備是否支持TouchID,返回BOOL為YES,該設(shè)備支持TouchID。

 if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {

error為返回驗(yàn)證錯(cuò)誤碼.具體不解釋了.

5. evaluatedPolicyDomainState

context.evaluatedPolicyDomainState用于判斷設(shè)備上的指紋是否被更改,在LAContext被創(chuàng)建的時(shí)候,evaluatedPolicyDomainState才生效,可在TouchID驗(yàn)證成功時(shí),將它記錄下來,用于下次使用TouchID時(shí)校驗(yàn),提高安全性。

6. evaluatePolicy

evaluatePolicy方法是對TouchID進(jìn)行驗(yàn)證,Block回調(diào)中如果success為YES則驗(yàn)證成功,為NO驗(yàn)證失敗,并對error進(jìn)行解析.

- (IBAction)loginButtonClick:(UIButton *)sender {
  
 //首先判斷版本
 if (NSFoundationVersionNumber < NSFoundationVersionNumber_iOS_8_0) {
  NSLog(@"系統(tǒng)版本不支持TouchID");
  return;
 }
  
  
 LAContext *context = [[LAContext alloc] init];
 context.localizedFallbackTitle = @"輸入密碼";
 if (@available(iOS 10.0, *)) {
//  context.localizedCancelTitle = @"22222";
 } else {
  // Fallback on earlier versions
 }
 NSError *error = nil;
 
 if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {
   
  [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"通過Home鍵驗(yàn)證已有手機(jī)指紋" reply:^(BOOL success, NSError * _Nullable error) {
    
   if (success) {
    dispatch_async(dispatch_get_main_queue(), ^{
     NSLog(@"TouchID 驗(yàn)證成功");
    });
   }else if(error){
     
    switch (error.code) {
     case LAErrorAuthenticationFailed:{
      dispatch_async(dispatch_get_main_queue(), ^{
       NSLog(@"TouchID 驗(yàn)證失敗");
      });
      break;
     }
     case LAErrorUserCancel:{
      dispatch_async(dispatch_get_main_queue(), ^{
       NSLog(@"TouchID 被用戶手動取消");
      });
     }
      break;
     case LAErrorUserFallback:{
      dispatch_async(dispatch_get_main_queue(), ^{
       NSLog(@"用戶不使用TouchID,選擇手動輸入密碼");
      });
     }
      break;
     case LAErrorSystemCancel:{
      dispatch_async(dispatch_get_main_queue(), ^{
       NSLog(@"TouchID 被系統(tǒng)取消 (如遇到來電,鎖屏,按了Home鍵等)");
      });
     }
      break;
     case LAErrorPasscodeNotSet:{
      dispatch_async(dispatch_get_main_queue(), ^{
       NSLog(@"TouchID 無法啟動,因?yàn)橛脩魶]有設(shè)置密碼");
      });
     }
      break;
     case LAErrorTouchIDNotEnrolled:{
      dispatch_async(dispatch_get_main_queue(), ^{
       NSLog(@"TouchID 無法啟動,因?yàn)橛脩魶]有設(shè)置TouchID");
      });
     }
      break;
     case LAErrorTouchIDNotAvailable:{
      dispatch_async(dispatch_get_main_queue(), ^{
       NSLog(@"TouchID 無效");
      });
     }
      break;
     case LAErrorTouchIDLockout:{
      dispatch_async(dispatch_get_main_queue(), ^{
       NSLog(@"TouchID 被鎖定(連續(xù)多次驗(yàn)證TouchID失敗,系統(tǒng)需要用戶手動輸入密碼)");
      });
     }
      break;
     case LAErrorAppCancel:{
      dispatch_async(dispatch_get_main_queue(), ^{
       NSLog(@"當(dāng)前軟件被掛起并取消了授權(quán) (如App進(jìn)入了后臺等)");
      });
     }
      break;
     case LAErrorInvalidContext:{
      dispatch_async(dispatch_get_main_queue(), ^{
       NSLog(@"當(dāng)前軟件被掛起并取消了授權(quán) (LAContext對象無效)");
      });
     }
      break;
     default:
      break;
    }
   }
  }];
   
 }else{
  NSLog(@"當(dāng)前設(shè)備不支持TouchID");
 }
}

上面這個(gè)代碼, 是整個(gè)TouchID的核心,也幾乎是所有代碼了.

驗(yàn)證

驗(yàn)證必須使用真機(jī)

結(jié)果

輸入錯(cuò)誤的時(shí)候

總結(jié):TouchID使用起來不難,重要的是使用流程邏輯.

以登錄為例,一般來說流程是這樣的:

  • 開啟指紋登錄:首次登陸使用密碼登錄,登錄后,可以設(shè)置一個(gè)開啟指紋ID登錄的按鈕,來進(jìn)行指紋認(rèn)證.
  • 驗(yàn)證:檢測是否支持TouchID.
  • 生成設(shè)備賬號/密碼:TouchID驗(yàn)證通過后,根據(jù)當(dāng)前已登錄的賬號和硬件設(shè)備Token,生成設(shè)備賬號/密碼(規(guī)則可自定,密碼要長要復(fù)雜),并保存在keychain;
  • 綁定:生成設(shè)備賬號/密碼后,將原賬號及設(shè)備賬號/密碼,加密后(題主使用的是RSA加密)發(fā)送到服務(wù)端進(jìn)行綁定;
  • 成功:驗(yàn)證原賬號及設(shè)備賬號有效后,返回相應(yīng)狀態(tài),綁定成功則完成整個(gè)TouchID(設(shè)備)綁定流程。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • iOS 水波紋動畫的實(shí)現(xiàn)效果

    iOS 水波紋動畫的實(shí)現(xiàn)效果

    本篇文章主要介紹了iOS 水波紋的實(shí)現(xiàn)的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-01-01
  • iOS實(shí)現(xiàn)二維碼的掃描功能

    iOS實(shí)現(xiàn)二維碼的掃描功能

    本文給大家介紹的是iOS 原生態(tài)API實(shí)現(xiàn)二維碼的掃描功能,非常簡單實(shí)用,有需要的小伙伴可以參考下。
    2015-07-07
  • iOS開發(fā)之APP相關(guān)

    iOS開發(fā)之APP相關(guān)

    本文給大家介紹的是IOS開發(fā)系列文章的第一篇,給大家分享一些APP相關(guān)的知識點(diǎn),非常的實(shí)用,有需要的小伙伴可以參考下
    2016-04-04
  • iOS 清除xcode緩存和生成文件的方法

    iOS 清除xcode緩存和生成文件的方法

    下面小編就為大家分享一篇iOS 清除xcode緩存和生成文件的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • 詳解IOS串行隊(duì)列與并行隊(duì)列進(jìn)行同步或者異步的實(shí)例

    詳解IOS串行隊(duì)列與并行隊(duì)列進(jìn)行同步或者異步的實(shí)例

    這篇文章主要介紹了詳解IOS串行隊(duì)列與并行隊(duì)列進(jìn)行同步或者異步的實(shí)例的相關(guān)資料,IOS中GCD的隊(duì)列分為串行隊(duì)列和并行隊(duì)列,任務(wù)分為同步任務(wù)和異步任務(wù),他們的排列組合有四種情況這里就一一分析下,需要的朋友可以參考下
    2017-07-07
  • iOS實(shí)現(xiàn)mp3播放效果

    iOS實(shí)現(xiàn)mp3播放效果

    這篇文章主要為大家詳細(xì)介紹了iOS實(shí)現(xiàn)mp3播放效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • iOS本地動態(tài)生成驗(yàn)證碼的方法

    iOS本地動態(tài)生成驗(yàn)證碼的方法

    這篇文章主要介紹了iOS本地動態(tài)生成驗(yàn)證碼的方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-01-01
  • iOS實(shí)現(xiàn)點(diǎn)贊動畫特效

    iOS實(shí)現(xiàn)點(diǎn)贊動畫特效

    這篇文章主要為大家詳細(xì)介紹了iOS實(shí)現(xiàn)點(diǎn)贊動畫特效,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-01-01
  • iOS開發(fā)之表視圖詳解

    iOS開發(fā)之表視圖詳解

    表視圖是iOS開發(fā)中最重要的視圖,它以列表的形式展示數(shù)據(jù)。本篇文章詳細(xì)的介紹了表視圖的幾種用法,有需要的小伙伴可以了解一下。
    2016-11-11
  • iOS開發(fā)中以application/json上傳文件實(shí)例詳解

    iOS開發(fā)中以application/json上傳文件實(shí)例詳解

    在和sever后臺交互的過程中、有時(shí)候、他們需要我們iOS開發(fā)者以“application/json”形式上傳,具體實(shí)例代碼大家參考下本文
    2017-07-07

最新評論

麦盖提县| 龙海市| 乾安县| 屏东县| 鹤岗市| 长治市| 中江县| 江山市| 张家界市| 宜城市| 德格县| 都兰县| 海阳市| 抚宁县| 房产| 大竹县| 阿勒泰市| 肥东县| 江阴市| 延寿县| 抚松县| 衢州市| 五大连池市| 乌恰县| 洛南县| 望奎县| 甘谷县| 邵阳市| 仙居县| 正定县| 比如县| 甘南县| 乐亭县| 延安市| 米脂县| 宜阳县| 利辛县| 泾阳县| 长汀县| 柳江县| 泗洪县|