iOS Touch ID使用教程

2017-11-18  本文已影响38人  MMD_
支持系统和机型

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

依赖框架

在使用前我们需要导入 LocalAuthentication.framework 这个库
然后引入头文件

#import <LocalAuthentication/LocalAuthentication.h>

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

OC代码
//验证是否支持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(@"不支持使用");
    }
}
IMG_0858.PNG
总结

Touch ID验证中我们并不能拿到标识,只有一个YES or NO的结果

上一篇下一篇

猜你喜欢

热点阅读