iOS8中使用TouchID校正,ios8touchid校正
在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就是簡單,簡簡單單幾句話 就可以。