加入Touch Id

1、引入头文件import <LocalAuthentication/LocalAuthentication>

2、.h中定义好:typedef void(^TouchIdValidationFailureBack)(LAError result);

.m中可以封装一下:

- (void)evaluatePolicy:(NSString *)localizedReason fallbackTitle:(NSString *)title SuccesResult:(void(^)())backSucces FailureResult:(TouchIdValidationFailureBack)backFailure

{

LAContext* context = [[LAContext alloc] init];//初始化上下文对象

NSError* error = nil;//错误对象

//首先使用canEvaluatePolicy 判断设备支持状态

if ([context canEvaluatePolicy: LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error])

{

//支持指纹验证

[context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics

localizedReason:localizedReason

reply:

^(BOOL succes, NSError *error) {

if (succes) {

NSLog(@"验证成功");//验证成功,返回主线程处理

dispatch_async(dispatch_get_main_queue(), ^{

backSucces(succes);

});

} else {

NSLog(@"验证失败");

NSLog(@"%@",error.localizedDescription);

dispatch_async(dispatch_get_main_queue(), ^{

backFailure(error.code);

});

}

}];

}else

{

NSLog(@"不支持指纹识别,LOG出错误详情");

NSLog(@"%@",error.localizedDescription);

dispatch_async(dispatch_get_main_queue(), ^{

backFailure(error.code);

});

}

}

3、返回错误类型

typedef NS_ENUM(NSInteger, LAError)

{

//授权失败

LAErrorAuthenticationFailed = kLAErrorAuthenticationFailed,

//用户取消Touch ID授权

LAErrorUserCancel          = kLAErrorUserCancel,

//用户选择输入密码

LAErrorUserFallback        = kLAErrorUserFallback,

//系统取消授权(例如其他APP切入)

LAErrorSystemCancel        = kLAErrorSystemCancel,

//系统未设置密码

LAErrorPasscodeNotSet      = kLAErrorPasscodeNotSet,

//设备Touch ID不可用,例如未打开

LAErrorTouchIDNotAvailable  = kLAErrorTouchIDNotAvailable,

//设备Touch ID不可用,用户未录入

LAErrorTouchIDNotEnrolled  = kLAErrorTouchIDNotEnrolled,

} NS_ENUM_AVAILABLE(10_10, 8_0);


iOS9中加入了新的错误类型:

LAErrorTouchIDLockout:iOS8.0也有这个错误的出现,这个错误出现,源自用户多次连续使用Touch ID失败,Touch ID被锁,需要用户输入密码解锁,这个错误的交互LocalAuthentication.framework已经封装好了,不需要开发者关心。

LAErrorAppCancel和LAErrorSystemCancel相似,都是当前软件被挂起取消了授权,但是前者是用户不能控制的挂起,例如突然来了电话,电话应用进入前台,APP被挂起。后者是用户自己切到了别的应用,例如按home键挂起。

LAErrorInvalidContext很好理解,就是授权过程中,LAContext对象被释放掉了,造成的授权失败。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • NSThread 第一种:通过NSThread的对象方法 NSThread *thread = [[NSThrea...
    攻城狮GG阅读 4,340评论 0 3
  • 一. 重点: 1.dispatch_queue_create(生成Dispatch Queue) 2.Main D...
    BestJoker阅读 5,515评论 2 2
  • 最近颇花了一番功夫把多线程GCD人的一些用法总结出来,一来帮自己巩固一下知识、二来希望能帮到对这一块还迷茫...
    人活一世阅读 2,498评论 1 1
  • iOS 開発の結構 画面 UI UIWebview [[UIApplication sharedApplicati...
    RencaiXiong阅读 3,749评论 0 0
  • 最近,CJ看了《番茄工作法图解——简单易行的时间管理方法》。经过实践,这种工作方法能很好地提升工作效率,在此推荐给...
    CJnie阅读 3,269评论 0 1

友情链接更多精彩内容