iOS指紋/密碼鑒定

一、兩種鑒定方式

LAPolicyDeviceOwnerAuthenticationWithBiometrics : 生物指紋識別。驗證彈框有兩個按鈕,第一個是取消按鈕,第二個按鈕可以自定義標題名稱(輸入密碼)。只有在第一次指紋驗證失敗后才會出現(xiàn)第二個按鈕,這種鑒定方式的第二個按鈕的功能自定義。前三次指紋驗證失敗,指紋驗證框不再彈出。再次重新進入驗證,還有兩次驗證機會,如果還是驗證失敗,TOUCH ID 被鎖住不再繼續(xù)彈出指紋驗證框。以后的每次驗證都將會彈出設備密碼輸入框直至輸入正確的設備密碼方可解除TOUCH ID鎖。


LAPolicyDeviceOwnerAuthentication: 生物指紋識別或系統(tǒng)密碼驗證。如果TOUCH ID 可用,且已經錄入指紋,則優(yōu)先調用指紋驗證。其次是調用系統(tǒng)密碼驗證,如果沒有開啟設備密碼,則不可以使用這種驗證方式。指紋識別驗證失敗三次將彈出設備密碼輸入框,如果不進行密碼輸入。再次進來還可以有兩次機會驗證指紋,如果都失敗則TOUCH ID被鎖住,以后每次進來驗證都是調用系統(tǒng)的設備密碼直至輸入正確的設備密碼方可解除TOUCH ID鎖。


二、鑒權錯誤信息類型

1. 驗證(指紋/密碼)不能開啟的錯誤信息:

  • LAErrorPasscodeNotSet : 設備密碼未設置
  • LAErrorTouchIDNotAvailable : TOUCH ID不可用
  • LAErrorTouchIDNotEnrolled : 指紋未錄入
  • LAErrorTouchIDLockout : TOUCH ID被鎖定
  • LAErrorAppCancel : APP調用了- (void)invalidate方法使 LAContext失效
  • LAErrorInvalidContext : 實例化的LAContext對象失效,再次調用evaluation...方法則會彈出此錯誤信息

2. 其他錯誤信息:

  • LAErrorAuthenticationFailed : 鑒定失敗
  • LAErrorUserCancel : 用戶取消
  • LAErrorUserFallback : 用戶選擇輸入密碼
  • LAErrorSystemCancel : 系統(tǒng)取消(如:另外一個應用進入前臺)

三、Show code

- (void)authentication
{
// 初始化上下文對象
LAContext* context = [[LAContext alloc] init];
    
NSError* error = nil;
NSString* result = @"需要您的支付進行支付";
context.localizedFallbackTitle = @"快捷支付";
NSLog(@"data before authentication = %@",[context evaluatedPolicyDomainState]);
    
// 首先使用canEvaluatePolicy 判斷設備支持狀態(tài)
if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {
    // 支持指紋驗證
    [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:result reply:^(BOOL success, NSError *error) {
     if (success) {
          //驗證成功,主線程處理UI
        NSLog(@"驗證成功...");
        NSLog(@"data after authentication = %@",[context evaluatedPolicyDomainState]);
     }else{
           NSLog(@"%@",error.localizedDescription);
           switch (error.code) {
               case LAErrorSystemCancel:
               {
                  NSLog(@"Authentication was cancelled by the system");
                  //切換到其他APP,系統(tǒng)取消驗證Touch ID
                  break;
               }
               case LAErrorUserCancel:
               {
                  NSLog(@"Authentication was cancelled by the user");
                  //用戶取消驗證Touch ID
                  break;
                }
                case LAErrorUserFallback:
                {
                  NSLog(@"User selected to enter custom password");
                  [[NSOperationQueue mainQueue] addOperationWithBlock:^{
                  //用戶選擇輸入密碼,切換主線程處理
                  }];
                   break;
                }
                case LAErrorAuthenticationFailed:
                {
                  NSLog(@"Authentication Failed");
                  break;
                }
                case LAErrorTouchIDLockout:
                {
                  NSLog(@"TOUCH ID is locked out");
                  break;
                }
                case LAErrorAppCancel:
                {
                   NSLog(@"app cancle the authentication");
                   break;
                }
                case LAErrorInvalidContext:
                {
                    NSLog(@"context is invalidated");
                    break;
                }
                default:
                {
                    [[NSOperationQueue mainQueue] addOperationWithBlock:^{
                    //其他情況,切換主線程處理
                    }];
                    break;
                }
              }
            }
        }];
}else {
    NSLog(@"%@",error.localizedDescription); 
    //不支持指紋識別,LOG出錯誤詳情
    switch (error.code) {
        case LAErrorTouchIDNotEnrolled:
        {
            NSLog(@"TouchID is not enrolled");
            break;
        }
        case LAErrorPasscodeNotSet:
        {
            NSLog(@"A passcode has not been set");
            break;
        }
        default:
        {
            NSLog(@"TouchID not available");
            break;
        }
     }
  }
}

a1

第一次進來驗證,第二行的文字 需要您的指紋進行支付 可以自定,此時第二個按鈕隱藏,第一次驗證失敗后才顯示。


a2

第一次指紋驗證失敗,第二個按鈕(標題自定義,默認為:輸入密碼)顯示出來,第一種驗證方式的此按鈕功能自定,第二種驗證方式的此按鈕點擊會調用設備密碼輸入框。


a3

設備密碼輸入框


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 簡述: 在類似支付寶為首的應用以及各種理財?shù)壬婕板X財對安全性要求較高的應用中,目前普遍對關鍵數(shù)據(jù)都做了安全訪問限制...
    C_HPY閱讀 3,199評論 0 18
  • 簡介 蘋果從iPhone5S開始,具有指紋識別技術,從iOS8.0之后蘋果允許第三方 App 使用 Touch I...
    z4ywzrq閱讀 6,726評論 10 75
  • 木夕明天要結婚了。在圣誕節(jié)結婚。好浪漫。 我們從不否認小木的美,但是那幾張婚紗照放出來的時候,還是驚艷到了我們這群...
    若昭閱讀 251評論 2 2
  • 我的父親,一個老帥的人,他······ 先別忙著想象,在女兒眼里,自家的父親肯定是世界上最帥的男人,我這么說,你懂...
    高冷磷酸鍵閱讀 848評論 5 8

友情鏈接更多精彩內容