要使用安全验证的相关api,我们需要引入如下头文件: #import <LocalAuthentication/LocalAuthentication.h> 添加手机密码验证: //创建安全验证对象 LAContext * con = [[LAContext alloc]init]; NSError * error; //判断是否支持密码验证 /** *LAPolicyDeviceOwnerAuthentication 进行指纹验证: LAContext * con = [[LAContext alloc]init]; NSError * error; BOOL can = [con canEvaluatePolicy
大致例如以下, Swift: 引入LocalAuthentication.framework import LocalAuthentication var myContext = LAContext 错误信息在error中 } Objective-C写法 LAContext *myContext = [[LAContext alloc] init]; NSError
localizedReason:(NSString *)localizedReason reply:(void(^)(BOOLsuccess, NSError * __nullable error))reply; 3.新建LAContext localizedReason:用于设置提示语,表示为什么要使用Touch ID 解锁失败界面 //创建LAContext LAContext *context = [LAContext
使用指纹传感器,一样需要典型的几步: 导入头文件LocalAuthentication 判断版本号,必须在8.0以上 创建LAContext对象,开始验证 好了,就结束了。 第三步:创建LAContext。这个就是LocalAuthentication暴露出来,让开发者使用的类。 第四步:检查Touch ID是否可用。 不是判断了系统就好了嘛?当然不是啊。 image.png let laContext = LAContext() //localizedFallbackTitle:验证TouchID时弹出Alert的输入密码按钮的标题 //ocalizedCancelTitle 可以设置验证TouchID时弹出Alert的取消按钮的标题(iOS10才有) laContext.localizedFallbackTitle = "手气不好,输入密码吧" laContext.localizedCancelTitle = nil // 检查Touch ID是否可用 if laContext.canEvaluatePolicy(.deviceOwnerAuthentication, error: &requestError
getBiometryType() -> BiometryType{ //该参数必须在canEvaluatePolicy方法后才有值 let authContent = LAContext let authContent = LAContext() //如果为空不展示输入密码的按钮 authContent.localizedFallbackTitle = strTips 打开设备密码验证通道,否则只能用户手动锁屏后才可以启用检测 private static func unlockLocalAuth() { let passwordContent = LAContext
---- ---- 集成篇 iOS 11之前集成TouchID - (void)touchId { //初始化上下文对象 LAContext* context = [[LAContext /} NS_ENUM_AVAILABLE(10_10, 8_0); iOS 11之前集成Face ID and TouchID 合为一体 - (void)FaceIDandTouchID { LAContext *myContext = [[LAContext alloc] init]; NSError *authError = nil; NSString *myLocalizedReasonString // LAErrorAppCancel NS_ENUM_AVAILABLE(10_11, 9_0) = kLAErrorAppCancel, // // /// LAContext通过这个已经失效
</string> 然后导入头文件 #import <LocalAuthentication/LocalAuthentication.h> ,最后创建 LAContext 去执行授权操作,这里也简单展示对应的错误码 kSecClassCertificate:证书 kSecClassKey:加密密钥 kSecClassIdentity: 身份认证 当然,此时你是否发现,在谈及 accessControl 和 keychain 时没有说明 LAContext 其实在创建 accessControl 时是有对应 kSecUseAuthenticationContext 参数用于设置 LAContext 到 keychain 认证,但是也可以不设置,具体为 : 如果未指定,并且该项目需要 authentication 认证,那就会自动创建一个新的 LAContext ,使用一次后丢弃; 如果是使用先前已通过身份验证的 LAContext ,则操作直接成功而不要求用户进行身份验证 ; 如果是使用先前未经过身份验证的 LAContext ,则系统会尝试在该 LAContext 上进行身份验证,如果成功就可以在后续的钥匙串操作中重用。
import <LocalAuthentication/LocalAuthentication.h> /** 检测TouchID是否可用 */ - (void)checkBiometrics { LAContext *context = [[LAContext alloc] init]; BOOL success = [context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics { NSLog(@"can`t use "); } } /** 在验证TouchID可用的情况下使用 */ - (void)excuteBiometrics { LAContext *context = [[LAContext alloc] init]; context.localizedFallbackTitle = @"自定义标题"; [context evaluatePolicy
获得一个上下文对象,来管理操作指纹解锁的过程 let context = LAContext() var error: NSError? // 3.
floatValue] < 8.0) { [self createAlterView:@"不支持指纹识别"]; return; }else{ LAContext *ctx = [[LAContext alloc] init]; //设置 输入密码 按钮的标题 ctx.localizedFallbackTitle = @"验证登录密码
floatValue] < 8.0) { [self createAlterView:@"不支持指纹识别"]; return; }else{ LAContext *ctx = [[LAContext alloc] init]; //设置 输入密码 按钮的标题 ctx.localizedFallbackTitle = @"验证登录密码
代码实现篇幅较长,详细的介绍在这ios swift版touchID&faceID 这就放一点核心代码 let authContent = LAContext() //如果为空不展示输入密码的按钮
NSLog(@"系统版本太低,请升级至最新系统"); return; } 实例化指纹识别对象,判断当前设备是否支持指纹识别功能(是否带有TouchID) // 1> 实例化指纹识别对象 LAContext *laCtx = [[LAContext alloc] init]; // 2> 判断当前设备是否支持指纹识别功能.
为弥补这一差异,Marco Eidinger 提供了一种巧妙的解决策略,即在执行钥匙串项读取操作之前,通过显式调用 LAContext.evaluatePolicy(_:localizedReason:
-> Void) { let context = LAContext() var error: NSError?