美文网首页项目经验iOS BlogiOS超神之路
iOS:Touch ID简易开发教程-仿alipay

iOS:Touch ID简易开发教程-仿alipay

作者: Monkey_ALin | 来源:发表于2016-02-25 13:49 被阅读1048次

    效果图

    touch_ID效果图

    前言

    2013年9月,苹果为当时发布的最新iPhone产品配备了一系列硬件升级方案。在iPhone 5s当中,最具创新特性的机制无疑要数围绕Home按钮设计的超薄金属圈,也就是被称为Touch ID的指纹传感器。这套Local Authentication框架能够轻松实现用户身份验证,大家可以利用它来完成应用程序的登录机制或者通过它保护应用程序当中的敏感数据。

    教程

    1.导入对应的框架头文件

    刚才我们说到,Touch ID指纹传感器所属Local Authentication框架.所以,第一步,我们需要导入头文件

    #import <LocalAuthentication/LocalAuthentication.h>
    

    2.判断设置是否支持Touch ID 或者 本机是否已经录入指纹

    这里我们需要使用到LAContext类,LAContext就是Touch ID

    • 2016.3.14 一个小补充, 之前有朋友给我留言和在我QQ上问我, 如果点击了输入密码,怎么调用系统的密码框.其实很简单,把下面代码的LAPolicyDeviceOwnerAuthenticationWithBiometrics改成LAPolicyDeviceOwnerAuthentication即可.点进头文件看一下,就了然了...
        if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {
                // 进行指纹验证操作,请看第三步
        }else {
            if (self.isSimulator) { // 判断是否是模拟器Simulator
                [[[UIAlertView alloc] initWithTitle:@"提示" message:@"请用真机测试~" delegate:nil cancelButtonTitle:@"好的" otherButtonTitles:nil, nil] show];
            }else{ // 不支持Touch ID操作
                [[[UIAlertView alloc] initWithTitle:@"提示" message:@"不支持Touch ID~" delegate:nil cancelButtonTitle:@"好的" otherButtonTitles:nil, nil] show];
            }
        }
    

    tip: 判断当前设置是否是模拟器Simulator

    - (BOOL)isSimulator{
         struct utsname systemInfo;
         uname(&systemInfo);
         NSString *deviceMachine = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];
        if ([deviceMachine isEqualToString:@"i386"] || [deviceMachine isEqualToString:@"x86_64"])       {
            return YES;
        }
        return NO;
    }
    
    

    3.Touch ID指纹验证

    [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"请验证已有指纹" reply:^(BOOL success, NSError * _Nullable error) {
                if (error) {
                    NSLog(@"验证失败"); // 系统会自动给错误提示
                }else{
                    dispatch_async(dispatch_get_main_queue(), ^{
                        // 验证成功,进行相关操作
                    });
                }
            }];
    

    PS:如果验证失败的话,系统会给出相应的提示,如图


    验证失败

    源码下载

    <a href="https://github.com/SunLiner/AlipayTouchID">github源码下载</a>

    联系我

    <a href="https://github.com/SunLiner">github</a>

    <a href="http://www.weibo.com/5589163526/profile?rightmod=1&wvr=6&mod=personinfo&is_all=1">微博</a>

    <a href="http://www.jianshu.com/users/9723687edfb5/latest_articles">简书</a>

    相关文章

      网友评论

      • 薛定谔的黑猫警长:点击输入密码,输入的是该app的登录密码,touch ID验证5次失败自动调起锁屏密码输入,该怎么实现呢,就是跟支付宝一样的那种效果
        薛定谔的黑猫警长:好了,已经实现了
      • qiongyong:如果用户选择了密码输入我们怎么操作呢?能调出系统的让用户输入密码的界面吗
        Monkey_ALin:@qiongyong :grin: 没事,有啥问题可以留言,我会在看到之后第一时间回复的.
        qiongyong:谢谢回复,我等下试一下
        Monkey_ALin:@qiongyong 抱歉啊,最近工作比较忙,忘了回复.在iOS9中,你把LAPolicyDeviceOwnerAuthenticationWithBiometrics换成LAPolicyDeviceOwnerAuthentication,如果你点击了输入密码,他会自动弹出密码框的.

      本文标题:iOS:Touch ID简易开发教程-仿alipay

      本文链接:https://www.haomeiwen.com/subject/hgiikttx.html