iOS8以后使用系统TouchID功能

2017年02月09日 iOS 9条评论 阅读2293次

iOS8以后,苹果公开了TouchID的验证功能,使得自己开发的APP能够更好更方便地保护用户信息及数据。

下面是使用TouchID验证的全部代码。


#import <LocalAuthentication/LocalAuthentication.h>
- (void)beginTouch {
    LAContext *context = [[LAContext alloc]init];
    NSError *err = nil;
    if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&err]) {
        if (err) {
            NSLog(@"%@", err);
            return;
        }
        context.localizedFallbackTitle = @"使用密码";
        context.localizedCancelTitle= @"取消";
        [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"现在按上指纹" reply:^(BOOL success, NSError * _Nullable error) {
            if (error) {
                NSLog(@"%@", error);
                switch (error.code) {
                    case LAErrorAuthenticationFailed:
                        NSLog(@"LAErrorAuthenticationFailed:连续三次指纹认证失败!");
                        break;
                    case LAErrorUserCancel:
                        NSLog(@"LAErrorUserCancel:用户已取消!");
                        break;
                    case LAErrorUserFallback:
                        NSLog(@"LAErrorUserFallback:用户选择使用Fallback的功能!");
                        break;
                    case LAErrorSystemCancel:
                        NSLog(@"LAErrorSystemCancel:TouchID对话框被系统取消,例如按下Home或者电源键进入后台!");
                        break;
                    case LAErrorPasscodeNotSet:
                        NSLog(@"LAErrorPasscodeNotSet:设备系统未设置密码!");
                        break;
                    case LAErrorTouchIDNotAvailable:
                        NSLog(@"LAErrorTouchIDNotAvailable:设备未设置Touch ID!");
                        break;
                    case LAErrorTouchIDNotEnrolled:
                        NSLog(@"LAErrorTouchIDNotEnrolled:用户未录入指纹!");
                        break;
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_9_0
                    case LAErrorTouchIDLockout:
                        NSLog(@"LAErrorTouchIDLockout:Touch ID被锁,需要用户输入密码解锁!");
                        break;
                    case LAErrorAppCancel:
                        NSLog(@"LAErrorAppCancel:如突然来了电话,电话应用进入前台,APP被挂起啦!");
                        break;
                    case LAErrorInvalidContext:
                        NSLog(@"LAErrorInvalidContext:LAContext传递给这个调用之前已经失效!");
                        break;
#else
#endif
                    default:
                        break;
                }
                return;
            }
            if (success) {
                NSLog(@"指纹认证成功!");
            } else {
                NSLog(@"指纹认证失败!");
            }
            dispatch_async(dispatch_get_main_queue(), ^{
                // do something on the UI thread
            });
        }];
    } else {
        UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Alert" message:@"设备没有指纹认证功能" preferredStyle:UIAlertControllerStyleAlert];
        UIAlertAction *action = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
        }];
        [alertController addAction:action];
        [self presentViewController:alertController animated:YES completion:nil];
    }
}


值得注意的是当用户按下指纹取得到指纹认证结果时,需要在主线程更新UI。

分享本文至:

WRITTEN BY

avatar
本文标签:iOSTouchID
看了本文是不是觉得很赞,那就赶紧点击下面按钮分享给身边的朋友吧!

9 条评论

  1. avatar allenchute

    <a href="http://www.momandpopop.com/hermes-alligator-bracelet-hermesr">hermes alligator bracelet</a> <a href="http://www.artlaurey.com/adidas-nmd-runner-vapour-pink-light-onix-exclusive-zero-shoesv">adidas nmd runner vapour pink light onix exclusive zero</a> <a href="http://www.ochapan.com/coach-tote-crossgrain-leather-coacha">coach tote crossgrain leather</a> <a href="http://www.brooklyngay.com/asics-gel-kinsei-2-dam%C3%A4nner-schwarz-shoesa">asics gel kinsei 2 dam盲nner schwarz</a> <a href="http://www.royphelps.com/nike-kyrie-2-purple-skos">nike kyrie 2 purple</a> <a href="http://www.agneaublanc.com/burberry-belt-price-singapore-beltr">burberry belt price singapore</a>
    allenchute http://www.allenchute.com/

  2. avatar PDM系统

    IOS开发比安卓的还是有不少技术含量的

  3. avatar 宁波PLM

    这文章值得学习一下

  4. avatar PDM系统

    这么好的文章值得学习

  5. avatar 盘古科技

    这真是好东西  认真学习一下

  6. avatar 老董优惠码

    不错 感谢分享

  7. avatar 轿车托运公司

    好东西 点个赞

欢迎留言




用户登录

sitemap