美文网首页
Touch ID 使用

Touch ID 使用

作者: Dincoln | 来源:发表于2017-09-21 22:40 被阅读0次

介绍

Touch ID是iPhone5S后加入的一项新的功能,也就是大家熟知的指纹识别技术。iOS8后苹果开放了Touch ID的API给开发者。

Face ID 是iPhone X 专属功能,也是iOS 11中的新功能,用于取代Touch ID,他们的作用都是为了让我们不在需要每次都使用密码进行身份验证,只需要指纹或者人脸就可完成相关认证。

Touch ID 和 Face ID 都属于生物特征认证,下文所提到的认证都包括这两种认证。

使用

使用Touch ID 和 Face ID 我们需要导入LocalAuthentication.framework框架,该框架只包含LAContext一个类,完成认证的所需接口就包含在这个类里面,下面就是这个类的主要方法和属性。

判断认证是否可用

- (BOOL)canEvaluatePolicy:(LAPolicy)policy error:(NSError * __autoreleasing *)error;

该方法会返回认证方式是否可用,policy表示认证策略,该枚举有两个可选值,

1、LAPolicyDeviceOwnerAuthenticationWithBiometrics    使用生物识别认证设备持有者身份

2、LAPolicyDeviceOwnerAuthentication  使用生物识别或者密码去认证设备持有者身份

两者的区别是 LAPolicyDeviceOwnerAuthentication 是iOS 9才开始有效的,在用户认证失败后会弹出密码输入框。点击fallback按钮将跳到密码输入界面,而不是执行回调block。

开始认证

- (void)evaluatePolicy:(LAPolicy)policy localizedReason:(NSString *)localizedReason reply:(void(^)(BOOL success, NSError * __nullable error))reply;

localizedReason 认证原因,会在弹出框上显示,reply认证结果回调block,error的错误原因有一下几个:

typedef NS_ENUM(NSInteger, LAError) {

//用户验证没有通过,比如提供了错误的指纹或人面

LAErrorAuthenticationFailed = kLAErrorAuthenticationFailed,

// 用户取消了认证

LAErrorUserCancel = kLAErrorUserCancel,

//用户不想认证,想进行其他操作,比如输入密码等

LAErrorUserFallback = kLAErrorUserFallback,

// 系统终止了验证,比如app进入后台

LAErrorSystemCancel = kLAErrorSystemCancel,

// 用户没有设定密码

LAErrorPasscodeNotSet = kLAErrorPasscodeNotSet,

// 设备不支持Touch ID,为了适配Face ID iOS 11之后废除

LAErrorTouchIDNotAvailable = kLAErrorTouchIDNotAvailable NS_ENUM_DEPRECATED(10_10,10_13,8_0,11_0,"use LAErrorBiometryNotAvailable") = kLAErrorTouchIDNotAvailable,

// 设备没有进行Touch ID 指纹注册,为了适配Face ID iOS 11之后废除

LAErrorTouchIDNotEnrolled = kLAErrorTouchIDNotEnrolled NS_ENUM_DEPRECATED(10_10,10_13,8_0,11_0,"use LAErrorBiometryNotEnrolled"),

//由于失败太多次,并且认证被锁定,要求用户输入密码来解锁。使用LAPolicyDeviceOwnerAuthenticationWithBiometrics策略多次失败后,不会自动弹出密码输入界面,并且调用验证方法会直接返回错误,我们需要转换验证策略为LAPolicyDeviceOwnerAuthentication,再调用认证方法,这时系统会弹出密码输入框让我们解锁,为了适配Face ID iOS 11之后废除

LAErrorTouchIDLockout = kLAErrorTouchIDLockout NS_ENUM_DEPRECATED(10_11,10_13,9_0,11_0,"use LAErrorBiometryLockout"),

//被app取消,比如,在认证过程中调用了invalidate方法

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

//LAContext对象已经失效了,比如,在认证前调用了invalidate方法

LAErrorInvalidContext = kLAErrorInvalidContext NS_ENUM_AVAILABLE(10_11,9_0),

//生物识别不可用,iOS 11之后可用

LAErrorBiometryNotAvailable = kLAErrorBiometryNotAvailable NS_ENUM_AVAILABLE(10_13,11_0) __WATCHOS_AVAILABLE(4.0) __TVOS_AVAILABLE(11.0),

//未设置人脸或指纹,iOS 11之后可用

LAErrorBiometryNotEnrolled = kLAErrorBiometryNotEnrolled NS_ENUM_AVAILABLE(10_13,11_0) __WATCHOS_AVAILABLE(4.0) __TVOS_AVAILABLE(11.0),

//由于失败太多次,并且认证被锁定,要求用户输入密码来解锁。使用LAPolicyDeviceOwnerAuthenticationWithBiometrics策略多次失败后,不会自动弹出密码输入界面,并且调用验证方法会直接返回错误,我们需要转换验证策略为LAPolicyDeviceOwnerAuthentication,再调用认证方法,这时系统会弹出密码输入框让我们解锁

LAErrorBiometryLockout = kLAErrorBiometryLockout NS_ENUM_AVAILABLE(10_13,11_0) __WATCHOS_AVAILABLE(4.0) __TVOS_AVAILABLE(11.0),

//被禁止弹出识别UI,无法验证,比如:LAContext的interactionNotAllowed属性被设为YES

LAErrorNotInteractive = kLAErrorNotInteractive API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0), tvos(10.0))

} NS_ENUM_AVAILABLE(10_10, 8_0);

使当前认证上下文对象无效

- (void)invalidate;

touchIDAuthenticationAllowableReuseDuration 该属性可以设置一个时间间隔,在时间间隔内是调用认证方法时可以不需要认证,直接通过。默认是0秒,最长可以设置5分钟。

localizedFallbackTitle  回退按钮标题,允许用户其他操作,设为空字符将被隐藏

localizedCancelTitle       取消按钮标题

maxBiometryFailures   最大认证失败次数

evalueatedPolicyDomainState 这个属性可以检测你的指纹数据库的变化,增加或者删除指纹这个属性会做出相应的反应,只有验证成功之后才会别赋值,注意:这个值得变化只能说明指纹库发生了变化,并不能知道发生了什么变化。

localizedReason   认证原因,会在弹出框上显示

interactionNotAllowed  设为Yes将不会弹出验证UI,直接回调错误

biometryType  认证类型,该属性只有在canEvaluatePolicy方法返回成功后,才会被赋值,该属性是有三个可选值:

LABiometryNone无生物验证方式

LABiometryTypeTouchID touchid认证

LABiometryTypeFaceID  Face ID认证,该属性是iOS 11新添加

相关文章

  • Touch ID 使用

    简单记录一下如何在自己的 APP 中调用系统 Touch ID 注意: 代码:

  • Touch ID 使用

    介绍 Touch ID是iPhone5S后加入的一项新的功能,也就是大家熟知的指纹识别技术。iOS8后苹果开放了T...

  • Touch ID使用

    前言:如果图片看不了请移步:简书 Touch ID简介 Touch ID指纹识别作为iPhone 5s上的“杀手级...

  • 使用Touch Id验证

    在新版支付宝和新版QQ中都加入了指纹识别功能,这么高大上的功能自然要学学怎么使用了。 像这种调用系统功能的,自然要...

  • Touch ID 简单使用

    Touch ID 指纹识别首次应用是在2013年9月发布的iPhone 5s 上。在今天,指纹识别已经是所有智能手...

  • iOS 填坑之Touch ID与Face ID

    一、Touch ID 2013年随iPhone 5s面世,Apple开启了,Touch ID解锁在移动终端上的使用...

  • Mac Book 上的touch id妙用

    使用新版的macbook或pro都是支持Touch ID。 Touch ID在工作生活中,有哪些妙用。今天介绍一下...

  • SwiftUI: 使用 Touch ID 和 Face ID

    苹果绝大多数设备都以生物识别身份验证为标准,这意味着它们使用指纹和面部识别来解锁。我们也可以使用此功能,这意味着我...

  • iOS Touch ID使用教程

    支持系统和机型 iOS系统的指纹识别功能最低支持的机型为iPhone 5s,最低支持系统为iOS 8,虽然安装iO...

  • 使用Touch ID(Local Authentication)

    Local Authentication 原文地址 1. 概述 2. LAContext 3. 授权策略 LAPo...

网友评论

      本文标题:Touch ID 使用

      本文链接:https://www.haomeiwen.com/subject/jkdisxtx.html