iOS 给App添加TouchID验证
TouchID验证这个在iOS8中已经对开发者开放使用了,而且需在5s以上真机才能使用,这个出来已经比较早了,相信很多人都应该已经知道怎么使用TouchID了,但是就目前我使用的App来说,看到使用TouchID验证的占得数量并不多,对于一些涉及到安全性的App来说,很有可能你的解锁验证、App登录以及支付验证都是用的TouchID使用TouchID验证还是有风险的,但是有些App增加使用TouchID作为一种验证还是不错的选择,既快捷又方便,对于开发者来说增加的成本也很低
这个是我所讲的demo的源码TouchID demo,代码量非常少
下面我就来介绍下怎么给App增加TouchID验证吧
首先,要使用TouchID,得先引入LocalAuthentication.framework这个库,这里面只有四个头文件,但实际使用到的只有LAContext.h和LAError.h这两个头文件
在做验证时,我们只需要使用到LAContext中的两个方法
我们先初始化一个LAContext对象
1 | LAContext *ctx = [[LAContext alloc] init]; |
然后调用
1 | - (BOOL)canEvaluatePolicy:(LAPolicy)policy error:(NSError*__autoreleasing*)error; |
方法来确定当前指定的验证方法能否使用,LAPolicy是个枚举,里面只有两个值,一个是LAPolicyDeviceOwnerAuthenticationWithBiometrics(使用该设备的TouchID验证),LAPolicyDeviceOwnerAuthentication(使用该设备的TouchID和设备密码验证)
这里返回的是一个布尔值,错误处理我等下一起说明,当返回可以使用当前指定的验证法方法时,我们调用
1 | - (void)evaluatePolicy:(LAPolicy)policy localizedReason:(NSString*)localizedReason reply:(void(^)(BOOLsuccess,NSError*__nullableerror))reply; |
方法开始使用TouchID验证,localizedReason指的是在弹出TouchID验证框时提示的文字,reply指的是在做指纹验证或者密码验证后的结果返回,我将localizedReason用@”通过Home键验证已有手机指纹”作为提示,下图比较直观
刚才布尔值的错误对应的是哪些呢?
这就用到了LAError.h这个类,这个类定义了目前所有的验证失败的错误code,我直接将它copy过来了
1 | typedefNS_ENUM(NSInteger, LAError) |
而前四种error是针对于能确定使用验证后,在验证后返回的错误
后六种error是针对于不能使用验证的原因
你可以针对这些原因做一些相应的操作,比如弹窗等等