TouchID 指纹登录

来源:互联网 发布:你怎么看待网络暴力 编辑:程序博客网 时间:2024/04/30 10:15

注:接入指纹验证之前确保您的设备是否支持 TouchID 功能并能正常使用的设备(iPhone 5s 及以上)。

#import "ViewController.h"#import <LocalAuthentication/LocalAuthentication.h>   //需要导入这个库文件@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];    if ([[self.navigationController.viewControllers firstObject] isEqual:self]) {        self.navigationItem.title = @"点击调用指纹识别";    }}- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {    [self touch];}- (void)touch {    if ([[self.navigationController.viewControllers firstObject] isEqual:self]) {        self.navigationItem.title = @"指纹验证";        //定义一个alter按钮        LAContext *context = [LAContext new]; //这个属性是设置指纹输入失败之后的弹出框的选项        context.localizedFallbackTitle = @"输入密码"; // 按钮的标题        NSError *error = nil;         //判断用户的手机是否支持指纹        if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics                                 error:&error]) {            NSLog(@"支持指纹识别");            [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics                    localizedReason:@"指纹登录"                              reply:^(BOOL success, NSError * _Nullable error) {                                //这里是指纹验证之后返回信息                                //只返回 success 值为 TRUE 或 FALSE                if (success) {                    NSLog(@"验证成功 你可以登录了 Go Go");                } else {                    NSLog(@"%@",error.localizedDescription);                    switch (error.code) {                        case LAErrorSystemCancel: {                            NSLog(@"系统取消授权,如其他APP切入");                            break;                        }                        case LAErrorUserCancel: {                            NSLog(@"用户取消验证Touch ID");                            break;                        }                        case LAErrorAuthenticationFailed: {                            NSLog(@"授权失败");                            break;                        }                        case LAErrorPasscodeNotSet: {                            NSLog(@"系统未设置密码");                            break;                        }                        case LAErrorTouchIDNotAvailable: {                            NSLog(@"设备Touch ID不可用,例如未打开");                            break;                        }                        case LAErrorTouchIDNotEnrolled: {                            NSLog(@"设备Touch ID不可用,用户未录入");                            break;                        }                        case LAErrorUserFallback: {                            [[NSOperationQueue mainQueue] addOperationWithBlock:^{                                NSLog(@"用户选择输入密码,切换主线程处理");                            }];                            break;                        }                        default: {                            [[NSOperationQueue mainQueue] addOperationWithBlock:^{                                NSLog(@"其他情况,切换主线程处理");                            }];                            break;                        }                    }                }            }];        } else {            NSLog(@"不支持指纹识别");            switch (error.code) {                case LAErrorTouchIDNotEnrolled: {                    NSLog(@"TouchID is not enrolled");                    break;                }                case LAErrorPasscodeNotSet: {                    NSLog(@"A passcode has not been set");                    break;                }                default: {                    NSLog(@"TouchID not available");                    break;                }            }            NSLog(@"%@",error.localizedDescription);        }    }}- (void)didReceiveMemoryWarning {    [super didReceiveMemoryWarning];}@end

项目源码请点击这里

0 0