iOS TouchID的使用

来源:互联网 发布:苹果手机下载软件 编辑:程序博客网 时间:2024/05/23 00:02

   上一篇说了一下KeyChain 这次来说一下 TouchID,灰常简单。

    iOS系统的指纹识别功能最低支持的机型为iPhone 5s,最低支持系统为iOS 8,虽然安装iOS 7系统的5s机型可以使用系统提供的指纹解锁功能,但由于API并未开放,所以理论上第三方软件不可使用。

    需要包含类库   LocalAuthentication.framework 

    下面说说 怎么使用。总共涉及一个类 LAContext 这个类里面有 两个方法 一个属性。

    一个属性为 NSString * localizedFallbackTitle。 这个属性为另一个选项Button的文字,  默认为@"输入密码", 如果不需要的话可以 设成@"",此时只有一个 取消的按钮

    方法一判断 是否可以使用指纹验证。

    - (BOOL)canEvaluatePolicy:(LAPolicy)policy error:(NSError * __autoreleasing *)error;

   实现代码例子

- (BOOL)canEvaluatePolicy{    LAContext *context = [[LAContext alloc] init];    NSError *error;    return [context canEvaluatePolicy: LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error];}

   方法二  使用指纹验证。
- (void)evaluatePolicy:(LAPolicy)policy       localizedReason:(NSString *)localizedReason    //这个是弹出框的 提示信息                 reply:(void(^)(BOOL success, NSError *error))reply; 

     实现的代码例子

- (void)evaluatePolicy{    LAContext *context = [[LAContext alloc] init];    context.localizedFallbackTitle = @"输入**密码";// localizedReason 为弹出框的提示信息。    [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:NSLocalizedString(@"**需要获取您的指纹认证", nil) reply:     ^(BOOL success, NSError *authenticationError) {         if (success) {//             成功         } else {             if (authenticationError.code == kLAErrorUserFallback) {//                 其他选择             }             if (authenticationError.code == kLAErrorUserCancel) {//                 取消             }         }     }];}

     最后说一下 指纹验证不可使用,和验证失败的错误情况

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);




0 0