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