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输入密码才可以再次被正常调用。否则直接返回生物特征已锁定,而引起认证失败。

相关推荐
未来侦察班5 小时前
一晃13年过去了,苹果的Airdrop依然很坚挺。
macos·ios·苹果vision pro
锐意无限11 小时前
Swift 扩展归纳--- UIView
开发语言·ios·swift
符哥200811 小时前
用Apollo + RxSwift + RxCocoa搭建一套网络请求框架
网络·ios·rxswift
文件夹__iOS15 小时前
AsyncStream 进阶实战:SwiftUI 全局消息流极简实现
ios·swiftui·swift
2501_9160088917 小时前
深入解析iOS机审4.3原理与混淆实战方法
android·java·开发语言·ios·小程序·uni-app·iphone
忆江南18 小时前
Flutter深度全解析
ios
山水域18 小时前
Swift 6 严格并发检查:@Sendable 与 Actor 隔离的深度解析
ios
楚轩努力变强18 小时前
iOS 自动化环境配置指南 (Appium + WebDriverAgent)
javascript·学习·macos·ios·appium·自动化
游戏开发爱好者82 天前
日常开发与测试的 App 测试方法、查看设备状态、实时日志、应用数据
android·ios·小程序·https·uni-app·iphone·webview
黑码哥2 天前
ViewHolder设计模式深度剖析:iOS开发者掌握Android列表性能优化的实战指南
android·ios·性能优化·跨平台开发·viewholder