你好,歡迎來到IOS教程網

 Ios教程網 >> IOS使用技巧 >> IOS技巧綜合 >> iOS8中使用TouchID校驗

iOS8中使用TouchID校驗

編輯:IOS技巧綜合
[摘要]本文是對iOS8中使用TouchID校驗的講解,對學習IOS蘋果軟件開發有所幫助,與大家分享。

在iOS8中,開發者們可使用向第三方應用開放了Touch ID權限的API,以便他們在應用中使用指紋認證來完成用戶認證部分。

本文主要介紹如何在應用中集成Touch ID來校驗用戶的身份。

#import <LocalAuthentication/LocalAuthentication.h>這個庫必須要Xcode6並且連接的是真機,才不會提示找不到的錯誤。 如果是模擬器會提示找不到這個庫。

 - (IBAction)authenticateButtonTapped:(id)sender {
     LAContext *context = [[LAContext alloc] init];
     context.localizedFallbackTitle = @"輸入密碼";
     NSError *error = nil;
     
     if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {
         
         [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics
                 localizedReason:@"您是這設備的所有者嗎?"
                           reply:^(BOOL success, NSError *error) {
                               if (success) {
                                   dispatch_async (dispatch_get_main_queue(), ^{
                                       
                                       UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Success"
                                                                                       message:@"你是設備主人。"
                                                                                      delegate:nil
                                                                             cancelButtonTitle:@"Ok"
                                                                             otherButtonTitles:nil];
                                       [alert show];
                                   });
                                   
                               }else{
                                   
                              
                               /*
                                // 用戶未提供有效證書,(3次機會失敗 --身份驗證失敗)。
                                LAErrorAuthenticationFailed = kLAErrorAuthenticationFailed,
                                
                                // 認證被取消,(用戶點擊取消按鈕)。
                                LAErrorUserCancel           = kLAErrorUserCancel,
                                
                                // 認證被取消,用戶點擊回退按鈕(輸入密碼)。
                                LAErrorUserFallback         = kLAErrorUserFallback,
                                
                                // 身份驗證被系統取消,(比如另一個應用程序去前台)。
                                LAErrorSystemCancel         = kLAErrorSystemCancel,
                                
                                // 身份驗證無法啟動,因為密碼在設備上沒有設置。
                                LAErrorPasscodeNotSet       = kLAErrorPasscodeNotSet,
                                
                                // 身份驗證無法啟動,因為觸摸ID在設備上不可用。
                                LAErrorTouchIDNotAvailable  = kLAErrorTouchIDNotAvailable,
                                
                                // 身份驗證無法啟動,因為沒有登記的手指觸摸ID。 沒有設置指紋密碼時。
                                LAErrorTouchIDNotEnrolled   = kLAErrorTouchIDNotEnrolled,
                                **/
                               switch (error.code) {
                                   case LAErrorAuthenticationFailed:
                                       NSLog(@"身份驗證失敗。");
                                    
                                       break;
                                       
                                   case LAErrorUserCancel:
                                       NSLog(@"用戶點擊取消按鈕。");
                                    
                                       break;
                                       
                                   case LAErrorUserFallback:
                                       NSLog(@"用戶點擊輸入密碼。");
                                    
                                       break;
                                       
                                   case LAErrorSystemCancel:
                                       NSLog(@"另一個應用程序去前台");
                                   
                                       break;
                                       
                                   case LAErrorPasscodeNotSet:
                                       NSLog(@"密碼在設備上沒有設置");
                                     
                                       break;
                                       
                                   case LAErrorTouchIDNotAvailable:
                                       NSLog(@"觸摸ID在設備上不可用");
                                   
                                       break;
                                       
                                   case LAErrorTouchIDNotEnrolled:
                                       NSLog(@"沒有登記的手指觸摸ID。");
                                 
                                       break;
                                       
                                   default:
                                       NSLog(@"Touch ID沒配置");
                                  
                                       break;
                               }
                             }
                         }];
         
     } else {
         dispatch_async (dispatch_get_main_queue(), ^{
             
             UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"錯誤提示"
                                                             message:@"您的設備沒有觸摸ID."
                                                            delegate:nil
                                                   cancelButtonTitle:@"Ok"
                                                   otherButtonTitles:nil];
             [alert show];
         });
     }
   
 }

其中:

(1)localizedFallbackTitle:用於設置左邊的按鈕的名稱,默認是輸入密碼。

(2)localizedReason:用於設置提示語,表示為什麼要使用Touch ID,如代碼中@"您是這設備的所有者嗎?"。

官方的API就是簡單,簡簡單單幾句話 就可以。

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved