官方文档 https://developer.apple.com/documentation/localauthentication/lacontext
第一步 :添加依赖库
LocalAuthentication .Framework
第二步:准许验证和登录逻辑
准许验证逻辑:(必须是登录之后)
- 开启:在app登录后,在“用户信息-安全”,点击开启“指纹登录”;
- 验证TouchID:检测当前设备是否支持TouchID,若支持则发起TouchID验证;
LAContext *laContext = [[LAContext alloc] init];
BOOL canAuth = [laContext canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:nil];
- 生成设备账号/密码:TouchID验证通过后,根据当前已登录的账号和硬件设备Token,生成设备账号/密码(规则可自定,密码要长要复杂),并保存在keychain;
if (canAuth) {
[laContext evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"通过Home键验证已有手机指纹" reply:^(BOOL success, NSError * _Nullable error) {
NSLog(@"%d",success);
//此处获取已登录账号及密码加密
}];
}
- 生成设备账号/密码后,将原账号及设备账号/密码,加密后发送到服务端进行绑定;
- 验证原账号及设备账号有效后,返回相应状态,绑定成功则完成整个TouchID(设备)绑定流程。
指纹登录
在设备(用户)绑定之后,并且用户账号退出后,可以使用指纹登录,若当前设备未绑定,则不会出现“指纹登录”按钮
- TouchID登录:在用户登录界面,点击“指纹登录”;
- 验证TouchID:检测当前设备是否支持TouchID,若支持则发起TouchID验证;
- 登录:读取app在本机的设备账号/密码,调用设备登录接口,发起登录请求;
- 成功:验证设备账号/密码后,返回相应状态,登录成功则完成整个TouchID登录流程。
总结:Touch ID验证的调用的方法有两个,一个是判断当前设备是否支持Touch ID,第二个就是验证指纹,此外还有个是evaluatedPolicyDomainState判断本地指纹库是否更新。“ However, the nature of the change cannot be determined from this data.”可能做完的感受就是这就话了,你不能从返回值得到有用的信息,仅仅是做判断。蛮好的\··||··/
网友评论