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];  
     }];  
      
}


目录
相关文章
|
4月前
|
数据采集 Java API
Java爬虫实战:API商品数据接口调用
随着互联网的发展,越来越多的商家开始将自己的商品数据通过API接口对外开放,以供其他开发者使用。这些API接口可以提供丰富的商品数据,包括商品名称、价格、库存、图片等信息。对于Java爬虫开发者来说,通过调用这些API接口,可以更加便捷地获取商品数据,避免了爬取网页数据的繁琐过程。本文将介绍如何使用Java调用API商品数据接口,实现商品数据的获取和处理。
|
27天前
|
缓存 供应链 安全
淘宝API接口调用:案例分析与最佳实践(续)
淘宝API接口是连接商家与淘宝平台强大功能的重要桥梁。通过案例分析和最佳实践的分享,我们希望商家能够更深入地理解如何有效地使用这些API来优化电商业务。随着技术的不断进步,淘宝API的功能将会越来越丰富,而商家面临的挑战也会越来越大。因此,商家需要不断地学习新技术、探索新方法,并且不断完善自己的API使用策略,以便更好地适应市场的变化,赢得竞争的优势。
|
27天前
|
供应链 搜索推荐 API
淘宝API接口调用:案例分析与最佳实践
在电子商务迅猛发展的今天,淘宝作为中国最大的在线购物平台之一,为商家们提供了强大的数据分析和市场洞察工具——淘宝API。有效的API调用不仅可以提升商家的运营效率,还可以帮助商家更好地理解消费者需求、优化商品布局、提高用户满意度等。本文将通过案例分析和最佳实践探讨如何高效利用淘宝API接口。
|
29天前
|
JSON 安全 数据挖掘
从入门到精通:淘宝API接口调用全攻略
概述: 在当今电子商务的繁荣发展下,淘宝作为中国领先的电商平台,不仅为消费者提供了便捷的购物环境,也为商家们提供了强大的数据支持和服务能力。淘宝开放平台提供的API接口使得商家能够高效地获取店铺和商品的实时数据,从而更好地分析市场趋势、优化店铺运营、提升用户体验。本文将详细介绍如何从入门到精通地调用淘宝API接口,使商家能够充分利用这一强大工具推动业务增长。
|
2月前
|
Java API 时序数据库
InfluxData【付诸实践 02】SpringBoot 集成时序数据库 InfluxDB 应用分享(InfluxDB实例+Feign接口调用InfluxDB API)源码分享
InfluxData【付诸实践 02】SpringBoot 集成时序数据库 InfluxDB 应用分享(InfluxDB实例+Feign接口调用InfluxDB API)源码分享
31 0
|
2月前
|
XML JSON 安全
uni-app API请求封装:让接口调用更加简单高效
在进行uni-app开发时,网络请求是必不可少的环节。为了方便开发,我们可以封装一些网络请求方法,以便在多个页面中复用,并且可以统一处理错误信息等问题,提高开发效率和代码质量。本文将介绍如何封装网络请求方法。
58 0
uni-app API请求封装:让接口调用更加简单高效
|
4月前
|
XML API 数据格式
API商品数据接口调用实战
随着互联网技术的发展,应用程序间的数据交互变得越来越重要。API(Application Programming Interface,应用程序编程接口)作为一种标准化的数据交互方式,被广泛应用于各种场景。本文将围绕API商品数据接口调用进行实战探讨,涉及API的基本概念、商品数据接口的设计、接口调用实现以及代码示例等方面。
|
7月前
|
XML JSON API
深入了解API接口调用——从获取淘宝商品数据开始
API(Application Programming Interface)是现代软件开发中常用的一种技术,它允许不同的软件系统进行交互和通信。在本文中,我们将深入探讨如何通过API接口来获取淘宝商品数据。这是一个常见的需求,无论是对于商家还是开发者,都有着重要的意义。
|
8月前
|
XML JSON 缓存
lazada获得lazada商品详情 API接口调用成功案例分享 返回数据解析(实时数据,支持高并发请求)
lazada获得lazada商品详情 API接口调用成功案例分享 返回数据解析(实时数据,支持高并发请求)
|
8月前
|
API
各大电商平台API接口调用展示
各大电商平台API接口调用展示

相关产品

  • 云迁移中心