IOS8使用Touch ID进行身份验证

IOS8使用Touch ID进行身份验证_第1张图片
Touch ID.png

IOS8 SDK 向开发者公开了 Touch IDAPI。对于我们的产品和IOS开发,我们就有了一个新的吸引用户的眼球的方法。如果,我们app内有个指纹验证,是不是让用户眼球一亮呢?
好了,下面直接上代码:
使用Touch Id 需要引入LocalAuthentication框架

#import 

然后我直接在控制器加了个按钮 ,给它建了Touch Up Inside事件,先检查TouchID 是否可用,然后执行认证策略

- (IBAction)onclickButton:(id)sender {
    //新建LAContext实例
    LAContext  *authenticationContext= [[LAContext alloc]init];
    NSError *error;
    //1:检查Touch ID 是否可用
    if ([authenticationContext canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {
        NSLog(@"touchId 可用");
        //2:执行认证策略
        [authenticationContext evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"需要验证您的指纹来确认您的身份信息" reply:^(BOOL success, NSError * _Nullable error) {
            if (success) {
                NSLog(@"通过了Touch Id指纹验证");
            }else{
                NSLog(@"error===%@",error);
                NSLog(@"code====%d",error.code);
                 NSLog(@"errorStr ======%@",[error.userInfo objectForKey:NSLocalizedDescriptionKey]);
                if (error.code == -2) {//点击了取消按钮
                    NSLog(@"点击了取消按钮");
                }else if (error.code == -3){//点输入密码按钮
                    NSLog(@"点输入密码按钮");
                }else if (error.code == -1){//连续三次指纹识别错误
                    NSLog(@"连续三次指纹识别错误");
                }else if (error.code == -4){//按下电源键
                    NSLog(@"按下电源键");
                }else if (error.code == -8){//Touch ID功能被锁定,下一次需要输入系统密码
                    NSLog(@"Touch ID功能被锁定,下一次需要输入系统密码");
                }
                NSLog(@"未通过Touch Id指纹验证");
            }
        }];
    }else{
        //todo goto 输入密码页面
        NSLog(@"error====%@",error);
        NSLog(@"抱歉,touchId 不可用");
    }
}

运行效果:


IOS8使用Touch ID进行身份验证_第2张图片
1597BC132A56B1B22542DD3D69D0A262.png

我们只需要对于error来做不同业务处理。

验证Touch ID 是否可用,error的不同情况

例如,在iphone5上运行结果:
Error Domain=com.apple.LocalAuthentication Code=-6 "Biometry is not available on this device." UserInfo=0x15ec5a00 {NSLocalizedDescription=Biometry is not available on this device.
例如,在模拟器上运行结果:
Error Domain=com.apple.LocalAuthentication Code=-1000 "Simulator is not supported." UserInfo=0x7ffe604b0790 {NSLocalizedDescription=Simulator is not supported.
例如,在有TouchID 的功能下,没有设置TouchID的运行结果:
Error Domain=com.apple.LocalAuthentication Code=-7 "No fingers are enrolled with Touch ID." UserInfo=0x170075fc0 {NSLocalizedDescription=No fingers are enrolled with Touch ID.

认证策略,error的不同情况

例如:连续三次指纹识别错误:
Error Domain=com.apple.LocalAuthentication Code=-1 "Aplication retry limit exceeded." UserInfo=0x1740797c0 {NSLocalizedDescription=Aplication retry limit exceeded.}
例如:用户在Touch ID对话框中点击了取消按钮:
Error Domain=com.apple.LocalAuthentication Code=-2 "Canceled by user." UserInfo=0x17006c780 {NSLocalizedDescription=Canceled by user.
例如:用户在Touch ID对话框中点击输入密码按钮:
Error Domain=com.apple.LocalAuthentication Code=-3 "Fallback authentication mechanism selected." UserInfo=0x17407e040 {NSLocalizedDescription=Fallback authentication mechanism selected.
例如:按下电源键:
Error Domain=com.apple.LocalAuthentication Code=-4 "UI canceled by system." UserInfo=0x170065900 {NSLocalizedDescription=UI canceled by system.}
例如:Touch ID功能被锁定,下一次需要输入系统密码时的运行结果:
Error Domain=com.apple.LocalAuthentication Code=-8 "Biometry is locked out." UserInfo={NSLocalizedDescription=Biometry is locked out.

被锁定之后,再次点击这个按钮,会出现如下的页面:

IOS8使用Touch ID进行身份验证_第3张图片
IMG_1086.PNG

对于error,我现在只找到这几种情况,如有更多,请告知。demo地址,请猛戳 这里。

你可能感兴趣的:(IOS8使用Touch ID进行身份验证)