iOS 给App添加TouchID验证

TouchID验证这个在iOS8中已经对开发者开放使用了,而且需在5s以上真机才能使用,这个出来已经比较早了,相信很多人都应该已经知道怎么使用TouchID了,但是就目前我使用的App来说,看到使用TouchID验证的占得数量并不多,对于一些涉及到安全性的App来说,很有可能你的解锁验证、App登录以及支付验证都是用的TouchID使用TouchID验证还是有风险的,但是有些App增加使用TouchID作为一种验证还是不错的选择,既快捷又方便,对于开发者来说增加的成本也很低

这个是我所讲的demo的源码,代码量非常少,代码排版我得好好研究研究...我排的一团糟...GitHub - Yuzeyang/TouchIDDemo: It's a simple demo to show how to use TouchID to login your app

下面我就来介绍下怎么给App增加TouchID验证吧

首先,要使用TouchID,得先引入LocalAuthentication.framework这个库,这里面只有四个头文件,但实际使用到的只有LAContext.h和LAError.h这两个头文件

在做验证时,我们只需要使用到LAContext中的两个方法

我们先初始化一个LAContext对象

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

然后调用- (BOOL)canEvaluatePolicy:(LAPolicy)policy error:(NSError*__autoreleasing*)error 方法来确定当前指定的验证方法能否使用,LAPolicy是个枚举,里面只有两个值,一个是LAPolicyDeviceOwnerAuthenticationWithBiometrics(使用该设备的TouchID验证),LAPolicyDeviceOwnerAuthentication(使用该设备的TouchID和设备密码验证)

这里返回的是一个布尔值,错误处理我等下一起说明,当返回可以使用当前指定的验证法方法时,我们调用- (void)evaluatePolicy:(LAPolicy)policy

localizedReason:(NSString*)localizedReason

reply:(void(^)(BOOLsuccess,NSError*__nullableerror))reply;方法开始使用TouchID验证,

localizedReason指的是在弹出TouchID验证框时提示的文字,reply指的是在做指纹验证或者密码验证后的结果返回,我将localizedReason用@"通过Home键验证已有手机指纹"作为提示,下图比较直观

iOS 给App添加TouchID验证_第1张图片

刚才布尔值的错误对应的是哪些呢?

这就用到了LAError.h这个类,这个类定义了目前所有的验证失败的错误code,我直接将它copy过来了

typedefNS_ENUM(NSInteger, LAError)

{

/// 校验失败

LAErrorAuthenticationFailed =kLAErrorAuthenticationFailed,

/// 用户取消验证

LAErrorUserCancel=kLAErrorUserCancel,

/// 用户回退(返回密码校验)

LAErrorUserFallback=kLAErrorUserFallback,

/// 系统取消校验

LAErrorSystemCancel=kLAErrorSystemCancel,

/// 密码未设置

LAErrorPasscodeNotSet=kLAErrorPasscodeNotSet,

/// 指纹不正确

LAErrorTouchIDNotAvailable=kLAErrorTouchIDNotAvailable,

/// 没有录入指纹

LAErrorTouchIDNotEnrolled=kLAErrorTouchIDNotEnrolled,

/// TouchID被锁定

LAErrorTouchIDLockoutNS_ENUM_AVAILABLE(10_11,9_0) =kLAErrorTouchIDLockout,

/// App取消验证

LAErrorAppCancelNS_ENUM_AVAILABLE(10_11,9_0) =kLAErrorAppCancel,

/// 无效的上下文环境

LAErrorInvalidContextNS_ENUM_AVAILABLE(10_11,9_0) =kLAErrorInvalidContext

}NS_ENUM_AVAILABLE(10_10,8_0); 

而前四种error是针对于能确定使用验证后,在验证后返回的错误

后六种error是针对于不能使用验证的原因

你可以针对这些原因做一些相应的操作,比如弹窗等等


如果有什么意见或者建议,欢迎大家留言,知识是需要交流的,我相信会有更好更简洁的方法来处理

这个是我的个人微信公众号,会不定期发表一些iOS开发文章以及疑难问题和我在阅读技术和非技术书籍的一些感悟,欢迎大家订阅!

iOS 给App添加TouchID验证_第2张图片
宫城Dev

你可能感兴趣的:(iOS 给App添加TouchID验证)