刀哥之指纹识别biometrics

指纹识别 - 生物识别

简介

  • iPhone 5S 开始支持
  • iOS 8.0 开放了 Touch ID 的接口

代码准备

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

    [self inputUserinfo];
}

///  输入用户信息
- (void)inputUserinfo {
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"提示" message:@"购买" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"购买", nil];
    alertView.alertViewStyle = UIAlertViewStyleLoginAndPasswordInput;

    [alertView show];
}

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
    NSLog(@"%zd", buttonIndex);

    if (buttonIndex == 0) {
        return;
    }

    UITextField *usernameText = [alertView textFieldAtIndex:0];
    UITextField *pwdText = [alertView textFieldAtIndex:1];

    if ([usernameText.text isEqualToString:@"zhang"] && [pwdText.text isEqualToString:@"123"]) {
        [self purchase];
    } else {
        [[[UIAlertView alloc] initWithTitle:@"提示" message:@"用户名或密码错误" delegate:nil cancelButtonTitle:@"取消" otherButtonTitles:nil, nil] show];
    }
}

///  购买
- (void)purchase {
    NSLog(@"购买");
}

指纹识别

头文件

#import <LocalAuthentication/LocalAuthentication.h>

判断是否支持指纹识别

// 检查版本
if ([UIDevice currentDevice].systemVersion.floatValue < 8.0) {
    [self inputUserinfo];
    return;
}

// 检查是否支持指纹识别
LAContext *ctx = [[LAContext alloc] init];

if ([ctx canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:NULL]) {
    NSLog(@"支持指纹识别");

    // 异步输入指纹
    [ctx evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"购买" reply:^(BOOL success, NSError *error) {
        NSLog(@"%d %@ %@", success, error, [NSThread currentThread]);
        if (success) {
            [self purchase];
        } else if (error.code == LAErrorUserFallback) {
            dispatch_async(dispatch_get_main_queue(), ^{
                [self inputUserinfo];
            });
        }
    }];
    NSLog(@"come here");
} else {
    [self inputUserinfo];
}

错误代号

错误 描述
LAErrorAuthenticationFailed 指纹无法识别
LAErrorUserCancel 用户点击了”取消”按钮
LAErrorUserFallback 用户取消,点击了”输入密码”按钮
LAErrorSystemCancel 系统取消,例如激活了其他应用程序
LAErrorPasscodeNotSet 验证无法启动,因为设备上没有设置密码
LAErrorTouchIDNotAvailable 验证无法启动,因为设备上没有 Touch ID
LAErrorTouchIDNotEnrolled 验证无法启动,因为没有输入指纹

使用 UIAlertController

- (void)inputUserInfo {
    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示" message:@"请输入用户名和口令" preferredStyle:UIAlertControllerStyleAlert];

    [alert addTextFieldWithConfigurationHandler:^(UITextField *textField) {
        textField.placeholder = @"请输入用户名";
    }];
    [alert addTextFieldWithConfigurationHandler:^(UITextField *textField) {
        textField.placeholder = @"请输入用户密码";
        textField.secureTextEntry = YES;
    }];

    [alert addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
        [self dismissViewControllerAnimated:YES completion:nil];
    }]];

    [alert addAction:[UIAlertAction actionWithTitle:@"购买" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
        NSString *username = [alert.textFields[0] text];
        NSString *pwd = [alert.textFields[1] text];

        if ([username isEqualToString:@"zhang"] && [pwd isEqualToString:@"1"]) {
            [self purchase];
        } else {
            [self showErrorMsg];
        }
    }]];

    [self presentViewController:alert animated:YES completion:nil];
}

- (void)showErrorMsg {
    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示" message:@"用户名或密码不正确" preferredStyle:UIAlertControllerStyleAlert];

    [alert addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
        [self dismissViewControllerAnimated:YES completion:nil];
    }]];

    [self presentViewController:alert animated:YES completion:nil];
}

- (void)purchase {
    NSLog(@"买了");
}
时间: 2024-10-08 17:05:37

刀哥之指纹识别biometrics的相关文章

深夜闲聊节目:华为 Mate7的指纹识别安全么?

许久没有写过任何东西,最近很忙而且还要准备找工作之类的,唉... ....今天的文章也不说技术,只是闲聊. 一.手机指纹识别一揽 打开很多网站.论坛的科技栏目,充斥着各种手机讯息!仿佛手机已经成了科技的代名词.更凶残的是,今年科技界,哦不,手机界永远少不了各种新闻:先是Zealer 和锤子的骂战,再是魅族攒了一年的新闻一起发,紧接着联想.HTC.Moto 不断放大招,最后是苹果的亮相.水货价格更是闪瞎我等屌丝的氪金狗眼 ... ... 手机/科技界的故事还远远没有尽头! 但是,但是... ...

iOS TouchID 指纹识别

////  ViewController.m//  touchID////  Created by 谢泽锋 on 16/4/1.//  Copyright © 2016年 xiezefeng. All rights reserved.// #import "ViewController.h"#import <LocalAuthentication/LocalAuthentication.h>@interface ViewController ()//验证设备是否支持Touc

whatweb网站指纹识别工具

WhatWeb是一款网站指纹识别工具,主要针对的问题是:"这个网站使用的什么技术?"WhatWeb可以告诉你网站搭建使用的程序,包括何种CMS系统.什么博客系统.Javascript库.web服务器.内嵌设备等.WhatWeb有超过900个插件,并且可以识别版本号.email地址.账号.web框架.SQL错误等等.特性* 超过900个插件* 高效.迅速.低碳* 插件包括应用实例URL* 多种日志格式:XML,JSON,MagicTree, RubyObject, MongoDB* 优质

指纹识别技术需要遵循的2点原则

手机指纹识别技术应该遵循的2点原则: 第一,指纹扫描必须只基于硬件,不可通过软件激活,或是将指纹信息传送给软件.如果该装置能够被软件激活,则无法避免被恶意代码攻击的风险.而基于硬件的实现仅会通知软件"指纹验证通过"或"指纹验证失败",但不会与软件分享任何指纹相关的数据与信息. 第二,在本地存储的指纹信息,其存储位置必须非常安全,这个位置必须禁止软件的访问,否则黑客会通过破解软件的方式来获取指纹信息.Shuman Ghosemajumder提到的2点原则应该成为所有指

Web指纹识别之Discuz识别+粗略版本判断

这个识别程序是本学期我的专业实训上的一个项目,就是做一个类似于Zoomeye的东西,然后使用ES进行整合,从而做出搜索引擎的模样.那么首先就要有能力去网上识别出相应的Web组件,如用户输入关键词:Discuz X3.0,我就要显示出相应版本的内容才OK.作为识别子程序,我这里暂且分享一下识别Web组件的思路. 我是从浅谈web指纹识别技术一文中找到的思路.对于Discuz的网站,第一时间想的就是识别footer了,但是问题在于,做的好的一些网站往往会将"Powered By"字样修改,

工控系统的指纹识别技术

转载:灯塔实验室 当前,指纹识别技术已被或坏或好的广泛应用于ICT(信息和通信技术)系统.攻击者通过扫描网络获取设备指纹来关联漏洞入侵系统,安全防护者则利用设备指纹来发现系统的脆弱性,检测系统的网络异常.在工业控制系统(ICS)中,指纹识别技术亦用于发现ICS系统脆弱性,检测攻击行为等方向.本文主要关注工控安全领域指纹识别技术. 指纹识别是什么 在ICT领域里,指纹识别是利用不同信息描述运行于网络中的设备或者软件的一种技术.我们了解最多的是设备指纹,被用来远程识别设备的硬件,操作系统,运行软件(

三星指纹识别新专利:手势打开不同应用

Note7夭折之后,三星S8就被外界扣上了"救世主"的帽子.从以往的爆料中,我们也看到了三星S8将拥有的一些黑科技,比如拍照方面的双摄像头,以及识别方面的光学指纹识别等等.如今,三星再一次不吭不响的公布了一项新专利,专长也在指纹识别方面,但主要的特性在于交互功能,可能会被其未来的手机采用. 专利图 三星的这项专利显示,用户只要将手指放在正面的指纹识别传感器上,解锁手机进行诸如滑动这样的手势操作便能开启应用.当然,随着滑动方向的不同,开启的应用也会不一样. 专利图 在指纹识别上集成手势操

ios开发-指纹识别

最近我们使用支付宝怎么软件的时候,发现可以使用指纹了,看起来是否的高大上.当时苹果推出了相关接口,让程序写起来很简单哈. 在iPhone5s的时候,苹果推出了指纹解锁.但是在ios8.0的时候苹果才推出相关的接口 所有我们需要判断硬件设备和ios系统版本是否支持 下面的例子是,先提示指纹识别,如果不支持或者主动取消,则需要手动输入密码认证 所以我们第一步需要判定系统版本,如果不支持,我们直接返回,即可 1 if ([UIDevice currentDevice].systemVersion.fl

指纹识别认证

首先截取一段百度关于指纹的定义: FRR与FAR FRR(False Rejection Rate)和FAR(False Acceptance Rate)是用来评估指纹识别算法性能的两个主要参数.FRR和FAR有时被用来评价一个指纹识别系统的性能,其实这并不贴切.指纹识别系统的性能除了受指纹算法的影响外,指纹采集设备的性能对FRR和FAR的影响也是不能忽视的. FRR通俗叫法是拒真率的意思,标准称谓是FNMR(False Non-Match Rate 不匹配率).可以通俗的理解为“把应该相互匹配