iOS Touch ID使用教程

支持系统和机型

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的结果

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 上午我参加业务会议,有十几个部门的小头头参会。领导一开始提示性的强调了几项工作,突然提出要评选先进。 “参加评选的...
    米班阅读 324评论 0 2
  • --- 这个名字毫无来由 就这么窜入脑海 我怎么知道 它和你 有些什么联系 若干年前 我的眼还能看清 我的耳也能听...
    木月摇江阅读 355评论 0 2
  • 如同一具行尸走肉 拖着虚空的身体 走向另一个虚空 在无尽的深渊,下沉 我嗅到了腐尸的气息 却无力挣脱 在黑暗的边缘...
    古谷2017阅读 198评论 0 3