文档章节

iOS开发之指纹解锁

云上飞飞
 云上飞飞
发布于 2016/07/27 14:30
字数 328
阅读 5
收藏 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
博文 128
码字总数 104735
作品 0
黄浦
程序员
LocalAuthentication开发实践

在iPhone 5s加入Touch ID后,指纹识别的功能在App中逐渐受到青睐,特别是对于本地安全较高的应用(如带支付的App)指纹识别是必备的功能,它既能解决在验证过程中输入密码的繁琐过程,同时指...

杰嗒嗒的阿杰
07/27
0
0
关于IOS越狱和解锁必须知道的一些事情

1.什么是越狱? 苹果开发的每一款产品,包括iphone,ipad,i pod touch和Mac,想要安装软件都是需要从App Store上面购买的,其实购买的不是软件,而是苹果在软件中植入的一个认证,于是大家就...

eric_zhang
2012/12/08
0
0
深度解读iOS 12中的USB限制模式

         前言   苹果早在2018年7月iOS 11.4.1发布时,就引入了USB限制模式,用户在更新iOS 11.4.1之后,可以在“设置”中的“面容ID与密码”(或者“触控ID与密码”)选项里找到“U...

嘶吼RoarTalk
10/10
0
0
iOS/安卓全能视频播放器推荐

前言 前几天有朋友下载了些 ts 格式的高清电视剧,但是没法在 iPad(iOS) 上播放,只好先在电脑上转换成 MP4 格式,转换起来很花时间,结果也不如意。 其实现在各平台都有全格式支持的播放器,...

己立
07/22
0
0
支付宝也推出了“电子身份证”,但暂时只在杭州等 3 个城市可用

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

suiling
04/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

nginx的简单使用:负载均衡

nginx:反向代理的服务器;用户发送请求到nginx,nginx把请求发送给真正的服务器,等待服务器处理完数据并返回,再把数据发送给用户。 nginx作为一个反向代理服务器,能缓存我们项目的静态文...

osliang
13分钟前
1
0
网站title标题被改并被百度网址安全中心提醒的解决办法

国庆假日期间我们Sine安全接到众多网站站长求助网站标题被改导致在百度搜索中百度安全中心提醒被拦截,导致网站正常用户无法浏览网站被跳转到一些菠菜du博网站,而且很明显的一个特征就是在百...

网站安全
15分钟前
1
0
JDK版本与major.minor version的对照关系

其实,只需要记住jdk6对于major.minor version 50即可,其他版本自行计算即可。 ---------------------

码代码的小司机
18分钟前
1
0
Gitlab安装

具体步骤如下: sudo yum install -y curl policycoreutils-python openssh-server cronie sudo lokkit -s http -s ssh sudo yum install postfix sudo service postfix start sudo chkconfi......

很好亦平凡ms
25分钟前
1
0
C++基础教程面向对象学习笔记及心得感悟[图]

C++基础教程面向对象学习笔记及心得感悟[图] 使用友元函数重载算术运算符: C ++中一些最常用的运算符是算术运算符 - 即加号运算符(+),减运算符( - ),乘法运算符(*)和除法运算符(/...

原创小博客
26分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部