文档章节

iOS开发之指纹解锁

云上飞飞
 云上飞飞
发布于 2016/07/27 14:30
字数 328
阅读 5
收藏 0
点赞 0
评论 0
#import <LocalAuthentication/LocalAuthentication.h>  
指纹验证的实现
- (void)authenticateUser  
{  
    //初始化上下文对象  
    LAContext* context = [[LAContext alloc] init];  
    //错误对象  
    NSError* error = nil;  
    NSString* result = @"Authentication is needed to access your notes.";  

    //首先使用canEvaluatePolicy 判断设备支持状态  
    if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {  
        //支持指纹验证  
        [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:result reply:^(BOOL success, NSError *error) {  
            if (success) {  
                //验证成功,主线程处理UI  
            }  
            else  
            {  
                NSLog(@"%@",error.localizedDescription);  
                switch (error.code) {  
                    case LAErrorSystemCancel:  
                    {  
                        NSLog(@"Authentication was cancelled by the system");  
                        //切换到其他APP,系统取消验证Touch ID  
                        break;  
                    }  
                    case LAErrorUserCancel:  
                    {  
                        NSLog(@"Authentication was cancelled by the user");  
                        //用户取消验证Touch ID  
                        break;  
                    }  
                    case LAErrorUserFallback:  
                    {  
                        NSLog(@"User selected to enter custom password");  
                        [[NSOperationQueue mainQueue] addOperationWithBlock:^{  
                            //用户选择其他验证方式,切换主线程处理  
                        }];  
                        break;  
                    }  
                    default:  
                    {  
                        [[NSOperationQueue mainQueue] addOperationWithBlock:^{  
                           //其他情况,切换主线程处理   
                        }];  
                        break;  
                    }  
                }  
            }  
        }];  
    }  
    else  
    {  
        //不支持指纹识别,LOG出错误详情  

        switch (error.code) {  
            case LAErrorTouchIDNotEnrolled:  
            {  
                NSLog(@"TouchID is not enrolled");  
                break;  
            }  
            case LAErrorPasscodeNotSet:  
            {  
                NSLog(@"A passcode has not been set");  
                break;  
            }  
            default:  
            {  
                NSLog(@"TouchID not available");  
                break;  
            }  
        }  

        NSLog(@"%@",error.localizedDescription);  
        [self showPasswordAlert];  
    }  }  

对几种情况的说明
typedef NS_ENUM(NSInteger, LAError)  
{  
    //授权失败  
    LAErrorAuthenticationFailed = kLAErrorAuthenticationFailed,  

    //用户取消Touch ID授权  
    LAErrorUserCancel           = kLAErrorUserCancel,  

   //用户选择输入密码  
    LAErrorUserFallback         = kLAErrorUserFallback,  

    //系统取消授权(例如其他APP切入)  
    LAErrorSystemCancel         = kLAErrorSystemCancel,  

   //系统未设置密码  
    LAErrorPasscodeNotSet       = kLAErrorPasscodeNotSet,  

   //设备Touch ID不可用,例如未打开  

   LAErrorTouchIDNotAvailable  = kLAErrorTouchIDNotAvailable,  

    //设备Touch ID不可用,用户未录入  
    LAErrorTouchIDNotEnrolled   = kLAErrorTouchIDNotEnrolled,  
} NS_ENUM_AVAILABLE(10_10, 8_0);

 

© 著作权归作者所有

共有 人打赏支持
云上飞飞
粉丝 6
博文 91
码字总数 100080
作品 0
黄浦
程序员
支付宝也推出了“电子身份证”,但暂时只在杭州等 3 个城市可用

支付宝也推出了“电子身份证”,但暂时只在杭州等 3 个城市可用 2018-04-18 16:39编辑: suiling分类:业界动态来源:爱范儿 微信支付宝电子证件电子身份证 招聘信息: C++工程师 Cocos2d-x游...

suiling ⋅ 04/18 ⋅ 0

ZipperDown漏洞来了!微博、陌陌、快手等常用 iOS 应用恐要中招

雷锋网(公众号:雷锋网)消息,5月15日,盘古实验室对外宣布,他们在针对不同客户的 iOS 应用安全审计过程中,发现了一类通用的安全漏洞---ZipperDown漏洞。 10%的iOS应用可能受ZipperDow...

郭佳 ⋅ 05/15 ⋅ 0

iOS-Security 苹果安全白皮书都讲了些啥?

2017.03.27 原文地址 使用Google 按段落翻译(上传文档的不太准),通读一遍后去掉设备或网络的超专业术语,也算是筛选掉对开发者意义不大的信息吧! 苹果设计的 iOS 平台向来是以安全为核心...

si1ence ⋅ 2017/12/14 ⋅ 0

瞬间被打脸:苹果的iOS 12 USB 封锁模式还未发布就已沦陷

        前言   6月5日,苹果宣布他们在iOS 12系统中加了新的安防取证措施,以防止像Grayshift这样的取证服务商任意读取数据。不过6月15日,根据Vice的一份最新报告显示,Grayshift...

嘶吼RoarTalk ⋅ 前天 ⋅ 0

iOS传感器:App前后台切换后,获取敏感信息使用touch ID进行校验

今天咱们主要是说指纹识别传感器,在文章的最后也会顺带说一下距离传感器。 Touch ID是苹果公司的一种指纹识别技术。Touch ID不存储用户的任何指纹图像,只保存代表指纹的数字字符。iPhone ...

非典型技术宅 ⋅ 01/15 ⋅ 0

又拍云Prism CDN 超低价 低延时 超强兼容的P2P-CDN

又拍云Prism CDN 超低价 低延时 超强兼容的P2P-CDN 2018-05-15 10:26编辑: 枣泥布丁分类:业界动态来源:https://www.upyun.com/products CDN又拍云 招聘信息: C++工程师 Cocos2d-x游戏客户...

枣泥布丁 ⋅ 05/15 ⋅ 0

【AR】开始使用Vuforia开发iOS(2)

原 设置iOS开发环境 安装Vuforia iOS SDK 如何安装Vuforia iOS示例 编译并运行Vuforia iOS示例 支持iOS金属 iOS 64位迁移 设置iOS开发环境 适用于iOS的Vuforia引擎目前支持运行iOS 9及更高版...

lichong951 ⋅ 06/11 ⋅ 0

如何判断你是合格的高级iOS开发工程师?

前言 随着移动互联网的高速发展泄洪而来,有意学习移动开发的人越来越多了,竞争也是越来越大,需要学习的东西很多。如何才能在激烈的移动开发者竞争中一枝独秀,成为一名真正合格的高级iOS...

_小迷糊 ⋅ 05/26 ⋅ 0

iOS高仿QQ侧滑控件、下载框架、动画效果、扫一扫、颜色变化、K线图等源码

iOS精选源码 仿京东"加入购物车"转场动画(http://www.code4app.com/thread-28162-1-1.html) ColorTool(颜色转换)(http://www.code4app.com/thread-29256-1-1.html) Swift 专业版K线(http://w......

sunnyaigd ⋅ 04/17 ⋅ 0

你见过最目瞪狗呆的bug是什么?

你见过最目瞪狗呆的bug是什么? 2018-05-28 14:01编辑: garace分类:程序人生来源:代码湾 bug网上注册刘伟楠 招聘信息: C++工程师 Cocos2d-x游戏客户端开发 iOS开发工程师 京东招聘iOS开发...

garace ⋅ 05/28 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Linux kernel脉络和主干总结

写在前面 前人常说,对Linux操作系统/内核的理解,是计算机行业从业者的内功,决定了你在技术领域想走多远。但内核的庞大以及学习曲线之陡峭,总让我在学习途中觉得犹如“管中窥豹”。 随着工...

Markz0928 ⋅ 9分钟前 ⋅ 0

在gcc中使用intel风格的内联汇编

很简单,内联汇编使用asm(“.intel_syntax noprefix/n”)声明一下,以后的内联汇编就可以用intel风格了,构建可执行文件时给gcc加上-masm=intel参数。 先写一个小程序测试一下: [cpp] view...

simpower ⋅ 19分钟前 ⋅ 0

NIO 之 ByteBuffer实现原理

相关文章 BIO、NIO、AIO 内部原理分析 NIO 之 Selector实现原理 NIO 之 Channel实现原理 前言 Java NIO 主要由下面3部分组成: Buffer Channel Selector 在传统IO中,流是基于字节的方式进行...

轨迹_ ⋅ 29分钟前 ⋅ 0

Jenkins docker权限问题

环境Ubuntu Server 工具 jenkins-war:2.89.2 报错信息 Cannot connect to the Docker daemon. Is the docker daemon running on this host?Build step 'Execute shell' marked build as fai......

Pulsar-V ⋅ 29分钟前 ⋅ 0

180621-一个简单的时间窗口设计与实现

如何设计一个计数的时间窗口 时间窗口,通常对于一些实时信息展示中用得比较多,比如维持一个五分钟的交易明细时间窗口,就需要记录当前时间,到五分钟之前的所有交易明细,而五分钟之前的数...

小灰灰Blog ⋅ 52分钟前 ⋅ 0

Android之Dalvik、ART、JIT、AOT

Android之Dalvik、ART、JIT、AOT 本文内容:Dalvik、ART、JIT、AOT之间关系 本文定位:知识记录 学习过程记录,加深理解,提升文字组合表达能力。也希望能给学习的同学一些灵感 本文整理于[...

lichuangnk ⋅ 56分钟前 ⋅ 0

Thrift RPC实战(五) thrift连接池

Thrift本身没有提供连接池,我们可以用Apache Commons Pool2来实现一个 一、定义对象工厂 BasePooledObjectFactory<T> extends BaseObject implements PooledObjectFactory<T> public class......

lemonLove ⋅ 56分钟前 ⋅ 0

git 命令简写

简写 命令 g git gst git status gd git diff gdc git diff --cached gdv git diff -w "$@" | view - gl git pull gup git pull --rebase gp git push gc git commit -v gc! git commit -v ......

charley158 ⋅ 今天 ⋅ 0

Java中的锁使用与实现

1.Lock接口 锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时访问共享资源。 在Lock出现之前,java程序是靠synchronized关键字实现锁功能的,而Java SE5之后,...

ZH-JSON ⋅ 今天 ⋅ 0

Intellij IDEA神器常用技巧四-类和方法注释模板设置

IDEA自带的注释模板不是太好用,我本人到网上搜集了很多资料系统的整理了一下制作了一份比较完整的模板来分享给大家,我不是专业玩博客的,写这篇文章只是为了让大家省事。 这里设置的注释模...

Mkeeper ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部