iOS8 Touch ID api接口调用

简介: Touch ID简介Touch ID是苹果公司提供的一种将指纹用作密码的简便方式。只需轻触i主屏幕按钮,就能激活Touch ID传感器。主屏幕按钮周围的钢圈检测手指通知 Touch ID读取指纹。


Touch ID简介

Touch ID是苹果公司提供的一种将指纹用作密码的简便方式。只需轻触i主屏幕按钮,就能激活Touch ID传感器。主屏幕按钮周围的钢圈检测手指通知 Touch ID读取指纹。Touch ID 不会储存指纹的任何图像。它只存储指纹的数学表达式。

Touch ID的指纹数据存储在A7处理器的一个叫"secure enclave"协处理器上,唯一的Touch ID指纹识别器与唯一单独的A7处理器匹配。也就是说你将Touch ID拆开装到别的iPhone 5s上,Touch ID是无法使用的,因为它无法读取到A7处理器上的指纹数据。


Touch ID接口

使用Touch ID需要导入LocalAuthentication.framework,必须在装有iOS8的真机设备才能编译通过。

导入

[objc]   view plain copy
  1. #import <LocalAuthentication/LAContext.h>  

判断当前是否有可用的Touch ID

    - (BOOL)canEvaluatePolicy  
    {  
        LAContext *context = [[LAContext alloc] init];  
        NSError *error;  
        BOOL success;  
          
        // test if we can evaluate the policy, this test will tell us if Touch ID is available and enrolled  
        success = [context canEvaluatePolicy: LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error];  
          
        return success;  
    }  

判断[context canEvaluatePolicy:error:];判断当前是否有可用Touch ID,设备没有设备没有TouchID或者TouchID未开启返回false,有TouchID并开启返回true.


调用显示验证界面

    - (void)evaluatePolicy  
    {  
        LAContext *context = [[LAContext alloc] init];  
        __block  NSString *msg;  
          
        // show the authentication UI with our reason string  
        [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:NSLocalizedString(@"UNLOCK_ACCESS_TO_LOCKED_FATURE", nil) reply:  
         ^(BOOL success, NSError *authenticationError) {  
             if (success) {  
                 msg =[NSString stringWithFormat:@"EVALUATE_POLICY_SUCCESS"];  
             } else {  
                 msg = [NSString stringWithFormat:@"EVALUATE_POLICY_WITH_ERROR : %@",  
                        authenticationError];  
             }  
             UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:msg message:nil delegate:nil cancelButtonTitle:@"ok" otherButtonTitles:nil];  
             [alertView show];  
         }];  
          
    }  


调用[contextevaluatePolicy:localizedReason:reply]可以显示验证界面,验证完毕后有一个回调。苹果官方文档规定第二个参数localizedReason一定要(shoudbe)使用用户的当前语言呈现。


真机演示(演示指纹识别成功的例子)


在真机测试中,指纹识别3次错误会退出验证界面并输出错误信息;在验证界面点击“输入密码”,也会退出,并输出错误信息。估计这是iOS8 Beta的bug,正常应该是指纹识别失败或者点击“输入密码”要弹出数字键盘。正式发布时,官方应该会处理好这个问题。

测试用的代码片段

- (void)viewDidLoad  
{  
    [super viewDidLoad];  
    [self.view setBackgroundColor:[UIColor whiteColor]];  
    UIButton* btn = [[UIButton alloc] init];  
    [btn setTitle:@"push me!" forState:UIControlStateNormal];  
    CGRect frame = CGRectMake(self.view.frame.size.width/2 - 60., self.view.frame.size.height/2, 120., 80.);  
    [btn setFrame:frame];  
      
    [btn addTarget:self action:@selector(showTouchId) forControlEvents:UIControlEventTouchUpInside];  
      
    [self.view addSubview:btn];  
      
}  
  
- (void)showTouchId  
{  
    if ([self canEvaluatePolicy]) {  
        [self evaluatePolicy];  
    } else {  
        UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"5s ok?" message:nil delegate:nil cancelButtonTitle:@"ok" otherButtonTitles:nil];  
        [alertView show];  
    }  
}  
  
#pragma mark - Tests  
  
- (BOOL)canEvaluatePolicy  
{  
    LAContext *context = [[LAContext alloc] init];  
    NSError *error;  
    BOOL success;  
      
    // test if we can evaluate the policy, this test will tell us if Touch ID is available and enrolled  
    success = [context canEvaluatePolicy: LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error];  
      
    return success;  
}  
  
- (void)evaluatePolicy  
{  
    LAContext *context = [[LAContext alloc] init];  
    __block  NSString *msg;  
      
    // show the authentication UI with our reason string  
    [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:NSLocalizedString(@"UNLOCK_ACCESS_TO_LOCKED_FATURE", nil) reply:  
     ^(BOOL success, NSError *authenticationError) {  
         if (success) {  
             msg =[NSString stringWithFormat:@"EVALUATE_POLICY_SUCCESS"];  
         } else {  
             msg = [NSString stringWithFormat:@"EVALUATE_POLICY_WITH_ERROR : %@",  
                    authenticationError];  
         }  
         UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:msg message:nil delegate:nil cancelButtonTitle:@"ok" otherButtonTitles:nil];  
         [alertView show];  
     }];  
      
}


目录
相关文章
|
1月前
|
人工智能 Java API
Google Gemini API 接口调用方法
Google 最近发布的 Gemini 1.0 AI 模型通过其升级版,Gemini,标志着公司迄今为止最为强大和多功能的人工智能技术的突破。
|
7天前
|
DataWorks 监控 API
DataWorks产品使用合集之在调用API创建质量监控规则中的校验器的ID可以在哪里找到
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
16天前
|
存储 JSON API
批量采集抖音商品详情数据:推荐你使用API(通过商品id取商品详情商品主图sku属性)
批量采集抖音商品详情,建议使用API接口。步骤包括:注册抖音开放平台获取App Key和Secret,调用商品详情API接口传入商品ID及相关参数,解析返回的JSON获取商品信息(如名称、价格、主图和SKU)。此外,接口列表提供商品搜索、销售量查询、历史价格、订单管理等多种功能。已封装的API接口地址:c0b.cc/R4rbK2,可测试并联系获取SDK文件。
13 1
|
1月前
|
供应链 搜索推荐 数据挖掘
拼多多根据ID取商品详情原数据 API (pinduoduo.item_get_app_pro)在电商中的应用
拼多多是一个非常受欢迎的电商平台,它提供了许多API接口来帮助开发者集成和扩展其功能。其中,pinduoduo.item_get_app_pro API接口是用于根据商品ID获取商品详情的。这个API接口在电商应用中具有广泛的应用场景,以下是几个例子: 个性化推荐:电商平台可以根据用户的浏览和购买历史,利用pinduoduo.item_get_app_pro API接口获取商品的详细信息,然后向用户推荐相似或相关的商品。这有助于提高用户的购物体验,增加用户的购买意愿。 库存管理:商家可以利用这个API接口实时查询商品库存情况,以便及时调整销售策略,避免库存积压或缺货。 商品详情页面优化:在商
|
1月前
|
数据采集 分布式计算 DataWorks
DataWorks产品使用合集之DataWorks数据地图中的数据发现相关api接口调用如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
27 0
|
1月前
|
API 开发者
怎样获取某手根据ID取商品详情 API 返回值说明
根据ID取商品详情的API一般会返回商品的基本信息和销售信息
|
1月前
|
存储 API 开发者
虾皮Shopee根据ID取商品详情API
在构建电商平台的第三方应用或服务时,开发者经常需要通过编程方式获取商品的详细信息。对于虾皮Shopee平台来说,其提供的API接口使得这一需求得以实现。本文将详细介绍如何调用虾皮Shopee的API接口,根据商品ID获取其商品详情。
|
1月前
|
iOS开发
Airtest的iOS实用接口介绍
Airtest的iOS实用接口介绍
|
1月前
|
XML 自然语言处理 前端开发
NLP自学习平台提供了API接口调用服务,这些接口可以通过HTTP GET请求进行调用
【2月更文挑战第7天】NLP自学习平台提供了API接口调用服务,这些接口可以通过HTTP GET请求进行调用
28 2
|
1月前
|
缓存 供应链 安全
淘宝API接口调用:案例分析与最佳实践(续)
淘宝API接口是连接商家与淘宝平台强大功能的重要桥梁。通过案例分析和最佳实践的分享,我们希望商家能够更深入地理解如何有效地使用这些API来优化电商业务。随着技术的不断进步,淘宝API的功能将会越来越丰富,而商家面临的挑战也会越来越大。因此,商家需要不断地学习新技术、探索新方法,并且不断完善自己的API使用策略,以便更好地适应市场的变化,赢得竞争的优势。