在游戏开发中,因为有帐号密码,并且再加上QQ登录这些功能之后,就不怎么用的到TouchID这个指纹解锁功能,但是如果是单机App应用的话,倒是可以加上这个功能,来为本地加个锁。
指纹解锁开发很简单,只用两步,引用头文件,接收返回结果
一、引入库和头文件
在项目中引入LocalAuthentication.framework
这个系统库,然后在需要用的地方导入头文件
#import <LocalAuthentication/LocalAuthentication.h>
二、加入TouchID功能
TouchID只用这两个函数
//判断是否支持TouchID功能
- (BOOL)canEvaluatePolicy:(LAPolicy)policy error:(NSError * __autoreleasing *)error __attribute__((swift_error(none)));
//指纹解锁
- (void)evaluatePolicy:(LAPolicy)policy localizedReason:(NSString *)localizedReason reply:(void(^)(BOOL success, NSError * __nullable error))reply;
使用的时候首先判断手机是否支持touchID功能,如果支持,就开始指纹解锁,然后在指纹解锁的代码块中,实现解锁成功和解锁失败的逻辑。需要真机调试,模拟器不支持
//创建
LAContext *lacontext = [[LAContext alloc] init];
NSError* error;
/**
LAPolicyDeviceOwnerAuthentication 9.0以上可用,指纹解锁六次错误自动跳转密码输入
LAPolicyDeviceOwnerAuthenticationWithBiometrics 8.0以上可用,指纹解锁五次错误消失
*/
//是否支持指纹解锁
if ([lacontext canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {
NSLog(@"支持指纹解锁");
[lacontext evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"请按指纹解锁" reply:^(BOOL success, NSError * _Nullable error) {
if (success) {
NSLog(@"解锁成功");
}
else{
switch (error.code) {
case LAErrorSystemCancel:
{
NSLog(@"切换到了其他APP");
break;
}
case LAErrorUserCancel:
{
NSLog(@"用户取消验证");
lacontext.localizedCancelTitle=@"用户取消";
break;
}
case LAErrorUserFallback:
{
NSLog(@"用户选择输入密码");
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
//用户选择输入密码,切换主线程处理
lacontext.localizedFallbackTitle=@"输入登录密码";
NSLog(@"sss");
}];
break;
}
default:
{
NSLog(@"%@",error.localizedDescription);
}
break;
}
}
}];
}
else{
//不支持指纹识别,LOG出错误详情
switch (error.code) {
case LAErrorTouchIDNotEnrolled:
{
NSLog(@"TouchID未录入");
break;
}
case LAErrorPasscodeNotSet:
{
NSLog(@"没有设置密码");
break;
}
case LAErrorTouchIDNotAvailable:
{
NSLog(@"TouchID不可用");
break;
}
default:
{
NSLog(@"%@",error.localizedDescription);
break;
}
}
}
其中解锁失败的原因可以在LAError.h中查看解释,而初始化的时候,下面这两种区别就是LAPolicyDeviceOwnerAuthentication
会自动弹出密码输入,而LAPolicyDeviceOwnerAuthenticationWithBiometrics
则需要自己去实现
LAPolicyDeviceOwnerAuthentication
9.0以上可用,指纹解锁六次错误自动跳转密码输入LAPolicyDeviceOwnerAuthenticationWithBiometrics
8.0以上可用,指纹解锁五次错误消失
弹出来的密码输入样式是下面这个样子,透明的背景
三、Demo下载
GitHub下载地址:https://github.com/DamonHu/HudongBlogDemo/tree/master/touchIDDemo
四、参考文章
版权属于:东哥笔记 - DongGe.org
本文链接:https://dongge.org/blog/381.html
自2017年12月26日起,『转载以及大段采集进行后续编辑』须注明本文标题和链接!否则禁止所有转载和采集行为!