在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就是简单,简简单单几句话 就可以。