1. 手势

手势的代码有很多,可以参考支付宝或者其他人写的。

手势/指纹登陆是为了省去输入密码的麻烦。参考了中国银行信用卡App --"缤纷生活",截图如下

1. 在登陆成功的情况下才能进入 “设置-账号与安全” 设置手势/指纹,未登陆时 见图10

2. 登陆成功时会提示你是否设置辅助登陆密码,也就是手势/指纹 ,见图1

3. 在“设置-账号与安全” 中点击开关,会进入到密码验证,如果已有手势,则弹出手势验证,见图2,3,4,5

4. 手势绘制需要重复绘制2次,录入成功之后回到开关界面,开关打开,见图6

5. 图8,是杀掉App,再次打开App,可见用户数据都清空了

6. 图9,有注册,切换登录方式这两个,目的就是为了给不同账号登陆

 

iOS 关于手势/指纹登陆

 

再看这个,我关闭了所有网络,此时用手势快捷登陆,会提示网络故障,由此可以看看出,手势验证成功之后,他立即发送了一个登陆的请求。

包括图9中这个用户名,可能还有密码,都会存入沙盒。

 

iOS 关于手势/指纹登陆

 

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
View Code

相关文章: