在iOS8中,開發者們可使用向第三方應用開放了Touch ID權限的API,以便他們在應用中使用指紋認證來完成用戶認證部分。
本文主要介紹如何在應用中集成Touch ID
來校驗用戶的身份。
#import <LocalAuthentication/LocalAuthentication.h>
這個庫必須要Xcode6并且連接的是真機,才不會提示找不到的錯誤。 如果是模擬器會提示找不到這個庫。
1 - (IBAction)authenticateButtonTapped:(id)sender { 2 LAContext *context = [[LAContext alloc] init]; 3 context.localizedFallbackTitle = @"輸入密碼"; 4 NSError *error = nil; 5 6 if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) { 7 8 [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics 9 localizedReason:@"您是這設備的所有者嗎?" 10 reply:^(BOOL success, NSError *error) { 11 if (success) { 12 dispatch_async (dispatch_get_main_queue(), ^{ 13 14 UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Success" 15 message:@"你是設備主人。" 16 delegate:nil 17 cancelButtonTitle:@"Ok" 18 otherButtonTitles:nil]; 19 [alert show]; 20 }); 21 22 }else{ 23 24 25 /* 26 // 用戶未提供有效證書,(3次機會失敗 --身份驗證失敗)。 27 LAErrorAuthenticationFailed = kLAErrorAuthenticationFailed, 28 29 // 認證被取消,(用戶點擊取消按鈕)。 30 LAErrorUserCancel = kLAErrorUserCancel, 31 32 // 認證被取消,用戶點擊回退按鈕(輸入密碼)。 33 LAErrorUserFallback = kLAErrorUserFallback, 34 35 // 身份驗證被系統取消,(比如另一個應用程序去前臺)。 36 LAErrorSystemCancel = kLAErrorSystemCancel, 37 38 // 身份驗證無法啟動,因為密碼在設備上沒有設置。 39 LAErrorPasscodeNotSet = kLAErrorPasscodeNotSet, 40 41 // 身份驗證無法啟動,因為觸摸ID在設備上不可用。 42 LAErrorTouchIDNotAvailable = kLAErrorTouchIDNotAvailable, 43 44 // 身份驗證無法啟動,因為沒有登記的手指觸摸ID。 沒有設置指紋密碼時。 45 LAErrorTouchIDNotEnrolled = kLAErrorTouchIDNotEnrolled, 46 **/ 47 switch (error.code) { 48 case LAErrorAuthenticationFailed: 49 NSLog(@"身份驗證失敗。"); 50 51 break; 52 53 case LAErrorUserCancel: 54 NSLog(@"用戶點擊取消按鈕。"); 55 56 break; 57 58 case LAErrorUserFallback: 59 NSLog(@"用戶點擊輸入密碼。"); 60 61 break; 62 63 case LAErrorSystemCancel: 64 NSLog(@"另一個應用程序去前臺"); 65 66 break; 67 68 case LAErrorPasscodeNotSet: 69 NSLog(@"密碼在設備上沒有設置"); 70 71 break; 72 73 case LAErrorTouchIDNotAvailable: 74 NSLog(@"觸摸ID在設備上不可用"); 75 76 break; 77 78 case LAErrorTouchIDNotEnrolled: 79 NSLog(@"沒有登記的手指觸摸ID。"); 80 81 break; 82 83 default: 84 NSLog(@"Touch ID沒配置"); 85 86 break; 87 } 88 } 89 }]; 90 91 } else { 92 dispatch_async (dispatch_get_main_queue(), ^{ 93 94 UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"錯誤提示" 95 message:@"您的設備沒有觸摸ID." 96 delegate:nil 97 cancelButtonTitle:@"Ok" 98 otherButtonTitles:nil]; 99 [alert show];100 });101 }102 103 }
其中:
(1)localizedFallbackTitle:用于設置左邊的按鈕的名稱,默認是輸入密碼。
(2)localizedReason:用于設置提示語,表示為什么要使用Touch ID,如代碼中@"您是這設備的所有者嗎?"。
官方的API就是簡單,簡簡單單幾句話 就可以。
新聞熱點
疑難解答