您的位置:首页 > 移动开发 > IOS开发

iOS 开发系列之在应用中添加TouchID 验证身份

2016-04-26 13:33 302 查看
iOS 8 SDK公开了Touch ID指纹识别功能,允许APP能够在自己的应用中通过指纹识别功能进行身份验证,指纹识别的依赖库是LocalAuthentication framework, 如果应用中需要身份验证的话,首先需要导入LocalAuthentication framework。

以下是一个demo ,通过button的点击事件来验证指纹密码

1.在storyboard拖放button,并设置点击事件

2.在项目中引入LocalAuthentication framework

3.在类中 引入 头文件LocalAuthentication.h

4.button的点击事件

- (IBAction)touchIdAction:(id)sender {

LAContext *context = [LAContext new];

NSError *error;

//当指纹识别错误时,让再试一次,alert右边按钮的title,默认情况下是“enter the password”,如果设置为空的话就不显示,左边按钮是取消

context.localizedFallbackTitle = @"输入登录密码";

//canEvaluatePolicy 返回值Bool,用来判断设备是否支持Touch ID

if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {

NSLog(@"canEvaluatePolicy设备支持Touch ID");

//evaluatePolicy 验证Touch ID

[context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:NSLocalizedString(@"通过Home键验证已有手机指纹", nil) reply:^(BOOL success, NSError * _Nullable error) {

NSLog(@"evaluetePlolicy");

if (success) {

NSLog(@"evaluatePolicy success TouchID验证成功");

//验证成功后续操作

} else {

NSLog(@"evaluatePolicy failure TouchID验证失败");

if (error.code == kLAErrorUserFallback) {

NSLog(@"error user fall back");

} else if (error.code == kLAErrorUserCancel) {

NSLog(@"error user cancel");

} else {

NSLog(@"Authenticated fail");

}

}

}];

} else {

NSLog(@"can not evaluatePolicy设备不支持TouchID");

}

}


5.验证失败的error code有以下几种情况,在不同的情况下回调

error.code == kLAErrorUserFallback 在第一次指纹失败,让在试一次时alert会有两个按钮,取消或者是上边定义的context.localizedFallbackTitle,如果点击alert右边的按钮会进入这个if分支

error.code == kLAErrorUserCancel 用户点击取消按钮

kLAErrorAuthenticationFailed 连续三次指纹错误

kLAErrorSystemCancel 在Touch ID对话框的显示过程中,被系统取消

kLAErrorPasscodeNotSet

kLAErrorTouchIDNotAvailable

kLAErrorTouchIDNotEnrolled

kLAErrorTouchIDLockout

kLAErrorAppCancel

kLAErrorInvalidContext
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: