iOS TouchID的使用

   上一篇说了一下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);




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值