iOS开发-指纹识别

指纹识别简介

  • 指纹识别功能是 iPhone 5s 推出的,SDK 是 iOS 8.0 推出。
  • 推出指纹识别的主要原因是为了简化支付,移动支付的环节约简单越好。

1)指纹验证方式:

   // 只使用指纹验证

    LAPolicyDeviceOwnerAuthenticationWithBiometrics NS_ENUM_AVAILABLE(NA, 8_0) = kLAPolicyDeviceOwnerAuthenticationWithBiometrics,

    // 使用指纹和设备密码验证

    LAPolicyDeviceOwnerAuthentication NS_ENUM_AVAILABLE(10_11, 9_0) = kLAPolicyDeviceOwnerAuthentication 

2)指纹验证错误信息:

// 指纹无法识别                        error.code == -1

    LAErrorAuthenticationFailed = kLAErrorAuthenticationFailed,

    // 用户点击了 “取消” 按钮               error.code == -2

    LAErrorUserCancel           = kLAErrorUserCancel,

    // 用户取消,点击了 “输入密码” 按钮       error.code == -3

    LAErrorUserFallback         = kLAErrorUserFallback,

    // 系统取消,例如激活了其他应用程序        error.code == -4

    LAErrorSystemCancel         = kLAErrorSystemCancel,

    // 验证无法启动,因为设备上没有设置密码     error.code == -5

    LAErrorPasscodeNotSet       = kLAErrorPasscodeNotSet,

    // 验证无法启动,因为设备上没有 Touch ID   error.code == -6

    LAErrorTouchIDNotAvailable  = kLAErrorTouchIDNotAvailable,

    // 验证无法启动,因为没有输入指纹          error.code == -7

    LAErrorTouchIDNotEnrolled   = kLAErrorTouchIDNotEnrolled,

    LAErrorTouchIDLockout   NS_ENUM_AVAILABLE(10_11, 9_0) = kLAErrorTouchIDLockout,

    LAErrorAppCancel        NS_ENUM_AVAILABLE(10_11, 9_0) = kLAErrorAppCancel,

    LAErrorInvalidContext   NS_ENUM_AVAILABLE(10_11, 9_0) = kLAErrorInvalidContext

指纹识别的使用

1.添加LocalAuthentication.framework库

2.导入头文件#import “LocalAuthentication/LAContext.h”

3.代码示例

// 判断用户手机系统是否是 iOS 8.0 以上版本

    if ([UIDevice currentDevice].systemVersion.floatValue < 8.0) {                                                              

        return;

    }

// 实例化本地身份验证上下文

    LAContext *context= [[LAContext alloc] init];

    // 判断是否支持指纹识别

    if (![context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:NULL]) {                              

        return;

    }

    NSError *authError = nil;

    NSString *myLocalizedReasonString = @”请输入指纹;

        // 提示:指纹识别只是判断当前用户是否是手机的主人!程序原本的逻辑不会受到任何的干扰!

        [myContext evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:myLocalizedReasonString reply:^(BOOL success, NSError * _Nullable error) {

            if (success) { 

            }else{

            }

        }];

代码解析

指纹识别的策略

[context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:nil] [context canEvaluatePolicy:LAPolicyDeviceOwnerAuthentication error:nil]

  • LAPolicyDeviceOwnerAuthenticationWithBiometrics ,指纹授权使用, 当设备不具有Touch ID的功能,或者在系统设置中没有设置开启指纹,授权将会失败。当指纹验证3+2次都没有通过的时候指纹验证就会被锁定,就需要先进行数字密码的解锁才能继续使用指纹密码。
  • LAPolicyDeviceOwnerAuthentication,指纹和数字密码的授权使用,当指纹可用且没有被锁定,授权后会进入指纹密码验证。不然的话会进入数字密码验证的页面。当系统数字密码没有设置不可用的时候,授权失败。如果数字密码输入不真确,连续6次输入数字密码都不真确后,会停用鉴定过一定的间隔后才能使用,间隔时间依次增长,如图:

%e5%b1%8f%e5%b9%95%e5%bf%ab%e7%85%a7-2016-11-30-%e4%b8%8b%e5%8d%889-02-11

  • 弹出的指纹验证框的两个按钮的标题,可以通过下面的方法修改:
  • context.localizedCancelTitle = @”取消”; context.localizedFallbackTitle = @”输入密码”;//如果设置为nil,按钮就不显示
  • %e5%b1%8f%e5%b9%95%e5%bf%ab%e7%85%a7-2016-11-30-%e4%b8%8b%e5%8d%889-04-32localizedReason:是用来设置弹出框的提示内容的,一般写的是是用原因,如图:

%e5%b1%8f%e5%b9%95%e5%bf%ab%e7%85%a7-2016-11-30-%e4%b8%8b%e5%8d%889-05-20

%e5%b1%8f%e5%b9%95%e5%bf%ab%e7%85%a7-2016-11-30-%e4%b8%8b%e5%8d%889-06-29

更多文章:http://www.jianshu.com/p/85689f7f183e

发表评论

电子邮件地址不会被公开。 必填项已用*标注