在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就是簡單,簡簡單單幾句話 就可以。