ios与android指纹识别,iOS开发实现TouchID指纹解锁 淩亂°似流年 2022-10-05 00:45 191阅读 0赞 一直想实现一下指纹解锁,苦于一直没时间,最近终于闲了下来所以翻了翻文档看了看demo,完成了这篇教程。本功能实现起来是很简单的,因为苹果都已经帮我们封装好了,只需要实现几个方法就可以了。 ![b522f0ddea78][] 实现效果图 实现过程 1.首先引入指纹解锁必须的头文件 \#import 2.了解下主要的两个方法 这个方法是判断设备是否支持TouchID的。 \- (BOOL)canEvaluatePolicy:(LAPolicy)policy error:(NSError \* \_\_autoreleasing \*)error \_\_attribute\_\_((swift\_error(none))); 这个是用来验证TouchID的,会有弹出框出来。 \- (void)evaluatePolicy:(LAPolicy)policy localizedReason:(NSString \*)localizedReason reply:(void(^)(BOOL success, NSError \* \_\_nullable error))reply; 3.新建LAContext对象 主要的属性设置 localizedFallbackTitle:用于设置左边的按钮的名称,默认是Enter Password. localizedReason:用于设置提示语,表示为什么要使用Touch ID ![b522f0ddea78][] 解锁失败界面 //创建LAContext LAContext \*context = \[LAContext new\]; //这个属性是设置指纹输入失败之后的弹出框的选项 context.localizedFallbackTitle = @"没有忘记密码"; 4.主要回调方法,包括成功以及失败的 NSError \*error = nil; if (\[context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error\]) \{ NSLog(@"支持指纹识别"); \[context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"指纹解锁" reply:^(BOOL success, NSError \* \_Nullable error) \{ if (success) \{ NSLog(@"验证成功 刷新主界面"); \}else\{ NSLog(@"%@",error.localizedDescription); switch (error.code) \{ case LAErrorSystemCancel: \{ NSLog(@"系统取消授权,如其他APP切入"); break; \} case LAErrorUserCancel: \{ NSLog(@"用户取消验证Touch ID"); break; \} case LAErrorAuthenticationFailed: \{ NSLog(@"授权失败"); break; \} case LAErrorPasscodeNotSet: \{ NSLog(@"系统未设置密码"); break; \} case LAErrorTouchIDNotAvailable: \{ NSLog(@"设备Touch ID不可用,例如未打开"); break; \} case LAErrorTouchIDNotEnrolled: \{ NSLog(@"设备Touch ID不可用,用户未录入"); break; \} case LAErrorUserFallback: \{ \[\[NSOperationQueue mainQueue\] addOperationWithBlock:^\{ NSLog(@"用户选择输入密码,切换主线程处理"); \}\]; break; \} default: \{ \[\[NSOperationQueue mainQueue\] addOperationWithBlock:^\{ NSLog(@"其他情况,切换主线程处理"); \}\]; break; \} \} \} \}\]; \}else\{ NSLog(@"不支持指纹识别"); switch (error.code) \{ case LAErrorTouchIDNotEnrolled: \{ NSLog(@"TouchID is not enrolled"); break; \} case LAErrorPasscodeNotSet: \{ NSLog(@"A passcode has not been set"); break; \} default: \{ NSLog(@"TouchID not available"); break; \} \} NSLog(@"%@",error.localizedDescription); \} 小结 做到这里几乎就算完成,使用确实很简单,因为苹果都已经给我们做好一切,对我们开发者来说就很轻松了。教程写的很简陋,希望大家多多包涵,代码我已经传到GitHub了,还有我的个人博客。 最后希望可以帮到大家。 参考资料 [b522f0ddea78]: /images/20221005/e81df1b2fedc4dd89bff9874080ad01f.png
还没有评论,来说两句吧...