一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - IOS - iOS指紋登錄(TouchID)集成方案詳解

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

2021-04-23 18:07軟件iOS開發 IOS

這篇文章主要為大家詳細介紹了iOS指紋登錄TouchID的集成方案,具有一定的參考價值,感興趣的小伙伴們可以參考一下

touchid指紋識別是iphone 5s設備中增加的一項重大功能.蘋果的后續移動設備也相繼添加了指紋功能,在實際使用中還是相當方便的,比如快捷登錄,快捷支付等等.系統提供了相應框架,使用起來還是比較方便的.使用lacontext對象即可完成指紋識別,提高用戶體驗.

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

提示:指紋識別必須用真機測試,并且在ios8以上系統.

touchid api使用

1.添加頭文件

#import

2.判斷系統版本

?
1
2
3
4
5
//首先判斷版本
if (nsfoundationversionnumber < nsfoundationversionnumber_ios_8_0) {
  nslog(@"系統版本不支持touchid");
  return;
}

3.lapolicy

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

lapolicydeviceownerauthenticationwithbiometrics和lapolicydeviceownerauthentication.

<1>. lapolicydeviceownerauthenticationwithbiometrics是支持ios8以上系統,使用該設備的touchid進行驗證,當輸入touchid驗證5次失敗后,touchid被鎖定,只能通過鎖屏后解鎖設備時輸入正確的解鎖密碼來解鎖touchid。

<2>.lapolicydeviceownerauthentication是支持ios9以上系統,使用該設備的touchid或設備密碼進行驗證,當輸入touchid驗證5次失敗后,touchid被鎖定,會觸發設備密碼頁面進行驗證。

4. canevaluatepolicy

使用canevaluatepolicy方法判斷設備是否支持touchid,返回bool為yes,該設備支持touchid。

?
1
if ([context canevaluatepolicy:lapolicydeviceownerauthenticationwithbiometrics error:&error]) {

error為返回驗證錯誤碼.具體不解釋了.

5. evaluatedpolicydomainstate

context.evaluatedpolicydomainstate用于判斷設備上的指紋是否被更改,在lacontext被創建的時候,evaluatedpolicydomainstate才生效,可在touchid驗證成功時,將它記錄下來,用于下次使用touchid時校驗,提高安全性。

6. evaluatepolicy

evaluatepolicy方法是對touchid進行驗證,block回調中如果success為yes則驗證成功,為no驗證失敗,并對error進行解析.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
- (ibaction)loginbuttonclick:(uibutton *)sender {
  
 //首先判斷版本
 if (nsfoundationversionnumber < nsfoundationversionnumber_ios_8_0) {
  nslog(@"系統版本不支持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鍵驗證已有手機指紋" reply:^(bool success, nserror * _nullable error) {
    
   if (success) {
    dispatch_async(dispatch_get_main_queue(), ^{
     nslog(@"touchid 驗證成功");
    });
   }else if(error){
     
    switch (error.code) {
     case laerrorauthenticationfailed:{
      dispatch_async(dispatch_get_main_queue(), ^{
       nslog(@"touchid 驗證失敗");
      });
      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 被系統取消 (如遇到來電,鎖屏,按了home鍵等)");
      });
     }
      break;
     case laerrorpasscodenotset:{
      dispatch_async(dispatch_get_main_queue(), ^{
       nslog(@"touchid 無法啟動,因為用戶沒有設置密碼");
      });
     }
      break;
     case laerrortouchidnotenrolled:{
      dispatch_async(dispatch_get_main_queue(), ^{
       nslog(@"touchid 無法啟動,因為用戶沒有設置touchid");
      });
     }
      break;
     case laerrortouchidnotavailable:{
      dispatch_async(dispatch_get_main_queue(), ^{
       nslog(@"touchid 無效");
      });
     }
      break;
     case laerrortouchidlockout:{
      dispatch_async(dispatch_get_main_queue(), ^{
       nslog(@"touchid 被鎖定(連續多次驗證touchid失敗,系統需要用戶手動輸入密碼)");
      });
     }
      break;
     case laerrorappcancel:{
      dispatch_async(dispatch_get_main_queue(), ^{
       nslog(@"當前軟件被掛起并取消了授權 (如app進入了后臺等)");
      });
     }
      break;
     case laerrorinvalidcontext:{
      dispatch_async(dispatch_get_main_queue(), ^{
       nslog(@"當前軟件被掛起并取消了授權 (lacontext對象無效)");
      });
     }
      break;
     default:
      break;
    }
   }
  }];
   
 }else{
  nslog(@"當前設備不支持touchid");
 }
}

上面這個代碼, 是整個touchid的核心,也幾乎是所有代碼了.

驗證

驗證必須使用真機

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

結果

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

輸入錯誤的時候

總結:touchid使用起來不難,重要的是使用流程邏輯.

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

  • 開啟指紋登錄:首次登陸使用密碼登錄,登錄后,可以設置一個開啟指紋id登錄的按鈕,來進行指紋認證.
  • 驗證:檢測是否支持touchid.
  • 生成設備賬號/密碼:touchid驗證通過后,根據當前已登錄的賬號和硬件設備token,生成設備賬號/密碼(規則可自定,密碼要長要復雜),并保存在keychain;
  • 綁定:生成設備賬號/密碼后,將原賬號及設備賬號/密碼,加密后(題主使用的是rsa加密)發送到服務端進行綁定;
  • 成功:驗證原賬號及設備賬號有效后,返回相應狀態,綁定成功則完成整個touchid(設備)綁定流程。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/qq_40201300/article/details/80000495

延伸 · 閱讀

精彩推薦
  • IOSiOS開發之視圖切換

    iOS開發之視圖切換

    在iOS開發中視圖的切換是很頻繁的,獨立的視圖應用在實際開發過程中并不常見,除非你的應用足夠簡單。在iOS開發中常用的視圖切換有三種,今天我們將...

    執著丶執念5282021-01-16
  • IOSiOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果

    iOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果

    這篇文章主要介紹了iOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果的相關資料,需要的朋友可以參考下...

    jiangamh8882021-01-11
  • IOS詳解iOS中多個網絡請求的同步問題總結

    詳解iOS中多個網絡請求的同步問題總結

    這篇文章主要介紹了詳解iOS中多個網絡請求的同步問題總結,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧...

    liang199111312021-03-15
  • IOSiOS中MD5加密算法的介紹和使用

    iOS中MD5加密算法的介紹和使用

    MD5加密是最常用的加密方法之一,是從一段字符串中通過相應特征生成一段32位的數字字母混合碼。對輸入信息生成唯一的128位散列值(32個字符)。這篇文...

    LYSNote5432021-02-04
  • IOSiOS實現控制屏幕常亮不變暗的方法示例

    iOS實現控制屏幕常亮不變暗的方法示例

    最近在工作中遇到了要將iOS屏幕保持常亮的需求,所以下面這篇文章主要給大家介紹了關于利用iOS如何實現控制屏幕常亮不變暗的方法,文中給出了詳細的...

    隨風13332021-04-02
  • IOSiOS開發技巧之狀態欄字體顏色的設置方法

    iOS開發技巧之狀態欄字體顏色的設置方法

    有時候我們需要根據不同的背景修改狀態欄字體的顏色,下面這篇文章主要給大家介紹了關于iOS開發技巧之狀態欄字體顏色的設置方法,文中通過示例代碼...

    夢想家-mxj8922021-05-10
  • IOSiOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和Masonry簡單使用)

    iOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和

    這篇文章主要介紹了iOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和Masonry簡單使用)的相關資料,需要的朋友可以參考下...

    CodingFire13652021-02-26
  • IOSiOS中UILabel實現長按復制功能實例代碼

    iOS中UILabel實現長按復制功能實例代碼

    在iOS開發過程中,有時候會用到UILabel展示的內容,那么就設計到點擊UILabel復制它上面展示的內容的功能,也就是Label長按復制功能,下面這篇文章主要給大...

    devilx12792021-04-02
主站蜘蛛池模板: 国产精品林美惠子在线观看 | 四虎影视免费观看 | 国产一级片免费观看 | 亚洲成av人影院 | 国内精品伊人久久大香线焦 | 亚洲第一网色综合久久 | 国产午夜精品福利 | 男人疯狂进女人下部视频动漫 | 精品国产免费观看一区高清 | 国产精品亚洲一区二区久久 | 欧美日韩一区二区综合 | 天天做天天爱天天爽综合区 | 男人天堂久久 | 亚洲AV无码专区国产乱码网站 | 国产成人精品系列在线观看 | 国产亚洲毛片在线 | 互换娇妻爽文100系列小说 | 动漫美女日批 | 日本欧美强乱视频在线 | 男男gaygays18中国 | 女bbbbxxx孕妇 | 国产精品夜夜爽张柏芝 | 亚洲国产综合久久精品 | 美女漫画网 | 国产亚洲精品网站 | 韩国日本在线观看 | 久久精品小视频 | 日韩毛片高清在线看 | 国产精品香蕉一区二区三区 | 爱色综合v| 国产a片毛片| 亚洲欧美综合一区 | 久久九九精品国产自在现线拍 | 亚洲国产精品自在在线观看 | 性一交一无一伦一精一品 | 四虎最新网址在线观看 | 好男人好资源在线观看免费 | 99超级碰碰成人香蕉网 | 三年片韩国在线 | 国产成人精品免费 | 日本一本草久p |