关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » iOS开发 »iOS 8 中如何集成 Touch ID 功能

    iOS 8 中如何集成 Touch ID 功能

    2014-11-23 00:00:00 出处:foruok的博客
    分享

    2013年9月,苹果为当时发布的最新iPhone产品配备了一系列硬件升级方案。在iPhone 5s当中,最具创新特性的机制无疑要数围绕Home按钮设计的超薄金属圈,也就是被称为Touch ID的指纹传感器。开发人员随后开始纷纷将其API作为突破口,希望能在自己的应用程序中引入这一最新功能。如今一年已经过去,iOS 8提供的新型框架则让开发者能够更加得心应手地使用这套指纹传感装置。

    这套Local Authentication框架能够轻松实现用户身份验证,大家可以利用它来完成应用程序的登录机制或者通过它保护应用程序当中的敏感数据。在今天的教程中,我们将共同了解如何将整套选项应用在自己的设计成果当中、我们能够从设备中获取哪些数据并一步步引导各位构建起一款示例应用程序。

    要完成本教程,大家需要安装Xcode 6以创建新项目,此外各位还需要一台配备Touch ID的设备来对自己创建完成的示例应用进行测试。

    1. Touch ID

    Touch ID指的是被安装在iPhone 5s Home按钮当中的指纹传感装置。它的出现旨在帮助用户更为轻松地完成身份识别流程,从而鼓励使用者尽可能多地使用保护机制。大家在每台设备上最多能够配置五种指纹识别信息。到目前为止,Touch ID已经能够被用于完成设备解锁并完成在iTunes Store、App Store以及iBooks Store当中的购买操作。在进一步探讨如何将其引入大家自己的应用程序之前,我们首先需要对这款传感器本身进行一番了解。

    Touch ID传感器能够以每英寸500像素的分辨率对用户指纹进行扫描,并将指纹图案划归为三种类型之一:拱型、旋涡型以及环型。这款传感器在设计上充分考虑到了便捷性需求,大家可以从任何角度对手指进行扫描、而且当前扫描结果能够与任何方向的原有指纹记录进行正确匹配。

    苹果公司宣称,对于任何一个给定指纹图案、Touch ID发生识别错误的机率仅为五万分之一,这样的保护效果明显优于原本的四位数PIN码机制——毕竟其内容只能在0001到9999之间提供一万种可能性组合。不过苹果没有明显指出的是,在某些情况下我们可能无法使用自己的指纹顺利实现解锁操作,例如在游泳之后手指纹理褶皱发生变化时。

    假如大家打算使用Touch ID,那么最重要的一点就是首先考虑到那些用户可能无法使用手指进行验证的使用场景。由于苹果不再允许我们使用设备内自带的PIN码验证机制,因此假如Touch ID无法正常起效、大家最好能在应用程序当中额外建立一套密码匹配方案。

    2. 安全注意事项

    指令传感器带来的最大问题在于,用户的隐私会从根本上受到侵犯。假如大家的密码内容被泄露出去,那么各位完全可以通过修改及时挽救、恶意人士根本无法继续利用其访问用户的敏感数据。然而假如大家的指纹信息,或者是苹果的指纹内容算法遭到外泄,我们明显没办法快速对其进行变更。

    Local Authentication框架负责处理所有用户身份验证的重任。当与Touch ID结合起效时,最重要的就是要确保该框架不会透露任何与用户有关的细节、而且不会有数据从设备中被传输出去。然而,开发人员可以利用这套框架来检查特定用户是否被允许使用对应应用程序。

    假如大家已经比较熟悉OAuth规范,就会发现这两种验证处理方式其实颇为相似。大家要求第三方对用户身份进行审核,假如我们对第三方充分信任,则可以根据其反馈直接向该用户提供认证凭证。

    3. LAContext

    Local Authentication框架的核心就是LAContext类。开发人员可以利用LAContext实例来对安全策略加以评估。截至本文发稿时,这也是惟一可资使用的管理策略。它会利用Touch ID传感器来检查用户的身份是否正是设备持有者。未来其它安全管理策略可能将陆续推出。举例来说,苹果公司可能会引入一类无权限角色、只允许他们对特定资源加以访问。

    假如这套框架无法完成验证,则会提供错误提示信息。设备无法完成验证的理由可能包括以下几种:

    LAErrorTouchIDNotAvailable 设备本身并不具备指纹传感装置。 LAErrorPasscodeNotSet 设备上并不具备密码设置信息,也就是说Touch ID功能处于被禁用状态。 LAErrorTouchIDNotEnrolled 已经设定有密码机制,但设备配置当中还没有保存过任何指纹内容。

    假如遇到了包含上述错误码的错误提示信息,大家就需要利用其它一些方法来完成对用户的身份验证。在这种情况下,各位已经不能单单依赖Touch ID来完成保护工作了。

    下面让我们一起创建一款示例应用程序,共同了解如何对Local Authentication框架加以使用。

    4. 项目设置

    第一步

    打开Xcode并在File菜单内选择New > Project…。接下来在iOS Application模板列表中选择Single view Application(单视图应用程序)并点击Next。

    第二步

    为我们的项目输入一个名称,我叫自己的应用命名为Auth。接下来输入组织名称、公司标识以及类前缀。在Devices列表中选择iPhone,然后点击Next,接下来为项目选择一个文件保存位置。

    第三步

    点击ViewController.h并定义一种新操作,authenticateButtonTapped,它会触发整个验证流程。ViewController类的界面外观应该如下所示:

    #import <UIKit/UIKit.h> 
    @interface ViewController : UIViewController 
    - (IBAction)authenticateButtonTapped:(id)sender; 
    @end

    第四步

    打开Main.storyboard并将一个Button拖拽到控制器的视图当中。变更该按钮的标签以使其读取为Authneticate。

    第五步

    右键点击该按钮以显示Connections Inspector。点击Touch Up Inside事件左侧的加号并选择用于容纳该按钮的视图控制器。这时屏幕上会显示出新的菜单,大家需要在这里选择我们之前已经设置完成的操作。

    5. 对用户身份进行验证

    第一步

    开启ViewController.m以激活authenticateButtonTapped方法。在文件开头位置添加以下面向Local Authentication框架的导入语句。

    #import <LocalAuthentication/LocalAuthentication.h>

    第二步

    在authenticateButtonTapped方法当中,我们创建一套背景信息并检测该背景是否能够对LAPolicyDeviceOwnerAuthenticationWithBiometrics策略加以评估,假如不同则显示错误信息。

    - (IBAction)authenticateButtonTapped:(id)sender { 
        LAContext *context = [[LAContext alloc] init]; 
    
        NSError *error = nil; 
    
        if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) { 
    
            // Authenticate User 
    
        } else { 
    
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" 
                                                            message:@"Your device cannot authenticate using TouchID." 
    delegate:nil 
    cancelButtonTitle:@"Ok" 
    otherButtonTitles:nil]; 
            [alert show]; 
        } 
    }

    第三步

    假如该LAContext对象能够利用Touch ID进行身份验证,那么我们就可以对用户身份加以审核了。假如没有出现错误提示信息,我们就能判断当前用户是否属于设备持有者。最后通过以下代码实施authenticateButtonTapped方法。

    - (void)authenicateButtonTapped:(id)sender { 
       LAContext *context = [[LAContext alloc] init]; 
       NSError *error = nil; 
       if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) { 
           [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics 
                   localizedReason:@"Are you the device owner " 
                             reply:^(BOOL success, NSError *error) { 
               if (error) { 
                   UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" 
    message:@"There was a problem verifying your identity." 
    delegate:nil 
                                                         cancelButtonTitle:@"Ok" 
                                                         otherButtonTitles:nil]; 
                   [alert show]; 
                   return; 
               } 
               if (success) { 
                   UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Success" 
                                                                   message:@"You are the device owner!" 
    delegate:nil 
    cancelButtonTitle:@"Ok" 
    otherButtonTitles:nil]; 
                   [alert show]; 
               } else { 
                   UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" 
    message:@"You are not the device owner." 
    delegate:nil
    cancelButtonTitle:@"Ok" 
    otherButtonTitles:nil]; 
                   [alert show]; 
               } 
           }]; 
       } else { 
           UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" 
                                                           message:@"Your device cannot authenticate using TouchID." 
                                                          delegate:nil 
                                                 cancelButtonTitle:@"Ok" 
                                                 otherButtonTitles:nil]; 
           [alert show]; 
       } 
    }

    6. 构建并运行

    下面我们需要在配备有指纹传感器的物理设备上构建并运行这款应用程序,并通过点触Home按钮进行身份验证。只要大家的设备能够切实支持Touch ID功能,应用程序中的验证机制应该就能得到正确通过。当各位将手指放在传感器上时,应用程序就可以正确识别出用户是否属于该设备的合法持有者。

    总结

    在今天的教程中,我们了解了iOS 8新近加入了Local Authentication框架。通过对用户身份进行查验,LAContext类允许用户在无法直接向应用程序本身提供任何敏感数据的前提下完成识别工作。

     

     

     

    上一篇返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    Destoon 模板存放规则及语法参考

    Destoon系统常量与变量

    Destoon系统目录文件结构说明

    Destoon 系统安装指南

    Destoon会员公司主页模板风格添加方法

    Destoon 二次开发入门

    Microsoft 将于 2026 年 10 月终止对 Windows 11 SE 的支持

    Windows 11 存储感知如何设置?了解Windows 11 存储感知开启的好处

    Windows 11 24H2 更新灾难:系统升级了,SSD固态盘不见了...

    小米路由器买哪款?Miwifi热门路由器型号对比分析

    IT头条

    Synology 对 Office 套件进行重大 AI 更新,增强私有云的生产力和安全性

    01:43

    StorONE 的高效平台将 Storage Guardian 数据中心占用空间减少 80%

    11:03

    年赚千亿的印度能源巨头Nayara 云服务瘫痪,被微软卡了一下脖子

    12:54

    国产6nm GPU新突破!砺算科技官宣:自研TrueGPU架构7月26日发布

    01:57

    公安部:我国在售汽车搭载的“智驾”系统都不具备“自动驾驶”功能

    02:03

    技术热点

    如何删除自带的不常用应用为windows 7减负

    MySQL中多表删除方法

    改进的二值图像像素标记算法及程序实现

    windows 7 32位系统下手动修改磁盘属性例如M盘修改为F盘

    windows 7中怎么样在家庭组互传文件

    Linux应用集成MySQL数据库访问技巧

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。