iOS 调用TouchID 身份验证

来源:互联网 发布:小学生计算机编程教材 编辑:程序博客网 时间:2024/05/22 13:44

iOS8后苹果开放了Touch ID的API给开发者,这也给我们的app带来了新的体验。开发者们可使用向第三方应用开放了Touch ID权限的API,以便他们在应用中使用指纹认证来完成用户认证或支付购买。本文主要介绍如何在应用中集成Touch ID来校验用户的身份和注意事项。

支持系统和机型

iOS系统的指纹识别功能最低支持的机型为iPhone 5s,最低支持系统为iOS 8,虽然安装iOS 7系统的5s机型可以使用系统提供的指纹解锁功能,但由于API并未开放,所以理论上第三方软件不可使用。

依赖框架

在使用前我们需要导入 LocalAuthentication.framework 这个库


这个库必须要Xcode6并且连接的是真机,才不会提示找不到的错误。 如果是模拟器会提示找不到这个库。

注意事项

iOS 8以下版本适配时,务必进行API验证,避免调用相关API引起崩溃。

使用类

LAContext 指纹验证操作对象

代码

//验证是否支持TouchID- (void)judgeCanTouchId{    LAContext *context = [LAContext new];        NSError *error;    context.localizedFallbackTitle = @"输入密码";        if ([context canEvaluatePolicy:(LAPolicyDeviceOwnerAuthenticationWithBiometrics) error:&error])    {        NSLog(@"支持使用");        [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:NSLocalizedString(@"通过验证指纹解锁",nil) reply:^(BOOL success, NSError * _Nullable error) {            if (success) {                NSLog(@"验证成功");            }            else            {                /*                 // 用户未提供有效证书,(3次机会失败 --身份验证失败)。                 LAErrorAuthenticationFailed = kLAErrorAuthenticationFailed,                                  // 认证被取消,(用户点击取消按钮)。                 LAErrorUserCancel           = kLAErrorUserCancel,                                  // 认证被取消,用户点击回退按钮(输入密码)。                 LAErrorUserFallback         = kLAErrorUserFallback,                                  // 身份验证被系统取消,(比如另一个应用程序去前台,切换到其他 APP)。                 LAErrorSystemCancel         = kLAErrorSystemCancel,                                  // 身份验证无法启动,因为密码在设备上没有设置。                 LAErrorPasscodeNotSet       = kLAErrorPasscodeNotSet,                                  // 身份验证无法启动,因为触摸ID在设备上不可用。                 LAErrorTouchIDNotAvailable  = kLAErrorTouchIDNotAvailable,                                  // 身份验证无法启动,因为没有登记的手指触摸ID。 没有设置指纹密码时。                 LAErrorTouchIDNotEnrolled   = kLAErrorTouchIDNotEnrolled,                 **/                if (error.code == kLAErrorUserFallback) {                    NSLog(@"用户选择了另一种方式");                }                else if (error.code == kLAErrorUserCancel)                {                    NSLog(@"用户取消");                }                else if (error.code == kLAErrorSystemCancel)                {                    NSLog(@"切换前台被取消");                }                else if (error.code == kLAErrorPasscodeNotSet)                {                    NSLog(@"身份验证没有设置");                }                else                {                    NSLog(@"验证失败");                }            }        }];    }    else    {        NSLog(@"不支持使用");    }}
运行一下ok了




0 0
原创粉丝点击