iOS开发--指纹解锁

前言

指纹解锁是自苹果公司推出iPhone 5s后推出的,将加密做到官方化,为APP的保密性提供了高度的方便性.

正文

指纹解锁很简单,三步即可搞定

第一步 请求

请求当前设备是不是支持指纹解锁

LAContext *context = [LAContext new];
NSError *error = NULL;
__weak typeof(self) WS = self;
if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {
    // 进行第二步骤
} else {
    if (resultBlock) {
        resultBlock(NO, @"不支持指纹");
    }
}

第二步 验证

这里需要知道的是,
iOS 9之前,指纹解锁只支持纯指纹解锁,
iOS 9之后,指纹解锁支持纯指纹解锁和指纹密码混合解锁两种方式

LAPolicy policy = LAPolicyDeviceOwnerAuthenticationWithBiometrics;

if (@available(iOS 9.0, *)) {
    switch (fingerprintType) {
        case FingerprintTool_OnlyFinger:
            policy = LAPolicyDeviceOwnerAuthenticationWithBiometrics;
            break;
        case FingerprintTool_FingerAndPassword:
            policy = LAPolicyDeviceOwnerAuthentication;
            break;
    }
} else {
    NSLog(@"指纹和密码的解锁模式,只支持系统版本大于或者等于9.0");
}

[context evaluatePolicy:policy
        localizedReason:localizedReason
                  reply:^(BOOL success, NSError * _Nullable error) {
                              // 第三步骤
                  }];

第三步 结果处理

结果处理,主要是处理成功和失败的情况,失败需要处理失败的原因(在你需要的话),失败基本上分为客观原因和人为原因(这里指的是人为取消)

if (resultBlock) {
    NSString *resultString = [WS referenceError:error 
                                 fallbackString:fallbackString];
    resultBlock(success, resultString);  
}
#pragma mark 返回错误参考信息
+ (NSString *)referenceError:(NSError *)error fallbackString:(NSString *)fallbackString {
    switch (error.code) {
        case LAErrorAuthenticationFailed:
            return @"授权失败";
            break;
        case LAErrorUserCancel:
            return @"用户取消验证Touch ID";
            break;
        case LAErrorUserFallback:
            return fallbackString;
            break;
        case LAErrorSystemCancel:
            return @"系统取消授权,如其他APP切入";
            break;
        case LAErrorPasscodeNotSet:
            return @"系统未设置密码";
            break;
        case LAErrorTouchIDNotAvailable:
            return @"设备Touch ID不可用,例如未打开";
            break;
        case LAErrorTouchIDNotEnrolled:
            return @"设备Touch ID不可用,用户未录入";
            break;
        case LAErrorTouchIDLockout:
            return @"身份验证未成功,多次使用Touch ID失败";
            break;
        case LAErrorAppCancel:
            return @"认证被取消的应用";
            break;
        case LAErrorInvalidContext:
            return @"授权对象失效";
            break;
        case LAErrorNotInteractive:
            return @"APP未完全启动,调用失败";
            break;

        default:
            return @"验证成功";
            break;
    }
}

结语

最后附上demo,如果感觉对你有所帮助,小星星走起⭐️⭐️⭐️

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值