1. 手势
手势的代码有很多,可以参考支付宝或者其他人写的。
手势/指纹登陆是为了省去输入密码的麻烦。参考了中国银行信用卡App --"缤纷生活",截图如下
1. 在登陆成功的情况下才能进入 “设置-账号与安全” 设置手势/指纹,未登陆时 见图10
2. 登陆成功时会提示你是否设置辅助登陆密码,也就是手势/指纹 ,见图1
3. 在“设置-账号与安全” 中点击开关,会进入到密码验证,如果已有手势,则弹出手势验证,见图2,3,4,5
4. 手势绘制需要重复绘制2次,录入成功之后回到开关界面,开关打开,见图6
5. 图8,是杀掉App,再次打开App,可见用户数据都清空了
6. 图9,有注册,切换登录方式这两个,目的就是为了给不同账号登陆
再看这个,我关闭了所有网络,此时用手势快捷登陆,会提示网络故障,由此可以看看出,手势验证成功之后,他立即发送了一个登陆的请求。
包括图9中这个用户名,可能还有密码,都会存入沙盒。
2. 指纹
而指纹验证,验证成功了在沙盒存一个标志就可以了。
一般指纹验证的时候3次失败了,会有有一个失败的回调,指纹弹窗消失,需要重新使用evaluatePolicy...方法唤起弹窗。5次失败则需要输入手机密码,然后再次唤起弹窗。
注意使用evaluatePolicy...方法的回调里面如果要操作UI,一定要切换回主线程。
这里参考https://github.com/ITHanYong/TouchID.git把指纹验证的代码封装到一个管理类中,然后回调用通知发出去。在使用的地方,就是要弹出的地方调用就可以了。少走很多弯路。
TouchIDManager.h
// // WLFTouchIDManager.h // WLFApp // // Created by udc on 2020/1/10. // Copyright © 2020 xxx. All rights reserved. // #import <Foundation/Foundation.h> #import <UIKit/UIKit.h> NS_ASSUME_NONNULL_BEGIN @interface WLFTouchIDManager : NSObject // 当识别出现每一种情况是会发出通知 + (void)validateTouchID; @end /* * 授权成功 */ UIKIT_EXTERN NSString *const ValidateTouchIDSuccess; /* * 取消按钮 */ UIKIT_EXTERN NSString *const ValidateTouchIDCancel; /* * 输入密码 */ UIKIT_EXTERN NSString *const ValidateTouchIDInputPassword; /* * 授权失败 */ UIKIT_EXTERN NSString *const ValidateTouchIDAuthenticationFailed; /* * 设备不可用 */ UIKIT_EXTERN NSString *const ValidateTouchIDNotAvailable; /* * 设备未设置指纹 */ UIKIT_EXTERN NSString *const ValidateTouchIDNotEnrolled; /* * 设备未设置密码 */ UIKIT_EXTERN NSString *const ValidateTouchIDErrorPasscodeNotSet; /* * 指纹设备被锁定 */ UIKIT_EXTERN NSString *const ValidateTouchIDLockout; NS_ASSUME_NONNULL_END