要求 :iOS 系统必须是8.0以上,mac系统必须是10.10以上,在5S之上的设备才支持指纹识别功能。
iOS 8 SDK向开发者公开了Touch ID指纹识别功能,允许App对用户身份进行本地验证。使用Touch ID非常简单;
1.需要引入LocalAuthentication框架
2.使用代码
LAContext *context = [[LAContext alloc]init];
context.localizedFallbackTitle = fallbackTitle;
NSError *error = nil;
NSAssert(self.delegate != nil, WJNotice(@"WJTouchIDDelegate 不能为空", @"WJTouchIDDelegate must be non-nil"));
//判断设备是否支持指纹识别
if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {
// 输入指纹,异步
// 提示:指纹识别只是判断当前用户是否是手机的主人!程序原本的逻辑不会受到任何的干扰!
[context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:message == nil ? WJNotice(@"默认提示信息", @"The Default Message") : message reply:^(BOOL success, NSError * _Nullable error) {
if (success) {
//指纹识别成功之后的处理
}
} else if (error) {
switch (error.code) {
case LAErrorAuthenticationFailed: {
//用户验证失败
}
break;
case LAErrorUserCancel: {
//用户取消
}
break;
case LAErrorUserFallback: {
//在TouchID对话框中点击输入密码按钮
}
break;
case LAErrorSystemCancel:{
//在验证的TouchID的过程中被系统取消 例如突然来电话、按了Home键、锁屏...
}
}
break;
case LAErrorTouchIDNotEnrolled: {
//设备没有录入TouchID,无法启用TouchID
}
break;
case LAErrorPasscodeNotSet: {
//无法启用TouchID,设备没有设置密码
}
break;
case LAErrorTouchIDNotAvailable: {
//该设备的TouchID无效
}
break;
case LAErrorTouchIDLockout: {
//多次连续使用Touch ID失败,Touch ID被锁,需要用户输入密码解锁
}
break;
case LAErrorAppCancel: {
//当前软件被挂起取消了授权(如突然来了电话,应用进入前台)
}
break;
case LAErrorInvalidContext: {
//当前软件被挂起取消了授权 (授权过程中,LAContext对象被释)
}
break;
}
}
}];
} else {
// 当前设备不支持指纹识别
}