iOS实现生物识别

1. info.plist中添加权限申请

复制代码
<key>NSFaceIDUsageDescription</key>
<string>APP would like to use Face ID</string>
<key>NSBiometricUsageDescription</key>
<string>APP would like to use Touch ID</string>

2. 添加库

Build PhasesLink Binary With LibrariesLocalAuthentication.framework

3. 实现代码

复制代码
#import <LocalAuthentication/LocalAuthentication.h>

// 检查是否支持认证
-(BOOL) isSupportBiometricCheck {
    LAContext *context = [[LAContext alloc] init];
    NSError *error = nil;
    
    // 检查设备是否支持生物识别认证
    if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthentication error:&error]) {
        return true;
    } else {
        return false;
    }
}

// 认证
// title:标题 eg.生物识别登录
// subTitle:副标题 eg.使用生物识别凭证登录
// negativeText:取消文本 eg.取消
- (void)biometricCheck:(CallSN)cbSn title:(NSString *)title
              subTitle:(NSString *)subTitle
        negativeButton:(NSString *)negativeText {
    LAContext *context = [[LAContext alloc] init];
    
    NSString *localizedReason = [NSString stringWithFormat:@"%@\\n%@", title, subTitle];
    
    [context evaluatePolicy:LAPolicyDeviceOwnerAuthentication
            localizedReason:localizedReason
                      reply:^(BOOL success, NSError * _Nullable error) {
        dispatch_async(dispatch_get_main_queue(), ^{
            if (success) {
                NSLog(@"认证成功");
            } else {
                NSLog(@"认证失败,原因:%@", error.description);
            }
        });
    }];
}

目前来看LAPolicyDeviceOwnerAuthentication优于LAPolicyDeviceOwnerAuthenticationWithBiometrics,因为LAPolicyDeviceOwnerAuthenticationWithBiometrics在验证失败时,需要重新输入一次锁屏密码或者调用LAPolicyDeviceOwnerAuthentication输入密码才可以再次被正常调用。否则直接返回生物特征已锁定,而引起认证失败。

相关推荐
2501_9159184111 小时前
iOS编程用什么软件好?主流工具Xcode、AppCode、CodeRunner与新兴快蝎对比
ide·vscode·ios·objective-c·个人开发·swift·敏捷流程
终端安全笔记20 小时前
iOS 27 之后「策略空转」:设备升级不报错,但旧策略不再管它
android·网络·安全·ios·智能手机
9765033351 天前
iOS 上架 4.3a 被拒【uniapp专讲】
flutter·ios·objective-c·uniapp·swift
黑化旺仔2 天前
【OC】KVO
macos·ios·objective-c·cocoa
HouWan2 天前
SwiftUI 小技巧:如何读取 SwiftUI Font 的详细信息
ios·swiftui·apple
李游Leo2 天前
HarmonyOS 7 实战开发 05:把页面做到可上线状态
ios·harmonyos
终端安全笔记2 天前
描述文件、企业证书、MDM 不是三个名字,是三层
android·ios·智能手机
传奇开心果编程2 天前
【SwiftUI入门练中学】第1课 从零开始
学习·ui·ios·swiftui·swift
丿Wayne2 天前
iOS Token 刷新实战(Actor 避免并发重复刷新)
ios·swift·token·actor·swift并发
终端安全笔记3 天前
iOS 27 给了租赁一个新工具,但它只认受监督的设备
android·网络·安全·ios