您的位置:首页 > 移动开发 > IOS开发

iOS---Touch ID于密码的简易开发教程

2016-03-15 20:25 453 查看


支持系统和机型:


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

依赖框架:



[objc] view
plain copy

 





LocalAuthentication.framework  

  

#import <LocalAuthentication/LocalAuthentication.h>  


注意事项:做
iOS 8
以下版本适配时,务必进行API验证,避免调用相关API引起崩溃。


使用类:
LAContext
 指纹验证操作对象

代码:


[objc] view
plain copy

 





- (void)authenticateUser  

{  

    //初始化上下文对象  

    LAContext* context = [[LAContext alloc] init];  

    //错误对象  

    NSError* error = nil;  

    NSString* result = @"Authentication is needed to access your notes.";  

  

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

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

        //支持指纹验证  

        [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:result reply:^(BOOL success, NSError *error) {  

            if (success) {  

                //验证成功,主线程处理UI  

            }  

            else  

            {  

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

                switch (error.code) {  

                    case LAErrorSystemCancel:  

                    {  

                        NSLog(@"Authentication was cancelled by the system");  

                        //切换到其他APP,系统取消验证Touch ID  

                        break;  

                    }  

                    case LAErrorUserCancel:  

                    {  

                        NSLog(@"Authentication was cancelled by the user");  

                        //用户取消验证Touch ID  

                        break;  

                    }  

                    case LAErrorUserFallback:  

                    {  

                        NSLog(@"User selected to enter custom password");  

                        [[NSOperationQueue mainQueue] addOperationWithBlock:^{  

                            //用户选择输入密码,切换主线程处理  

                        }];  

                        break;  

                    }  

                    default:  

                    {  

                        [[NSOperationQueue mainQueue] addOperationWithBlock:^{  

                           //其他情况,切换主线程处理   

                        }];  

                        break;  

                    }  

                }  

            }  

        }];  

    }  

    else  

    {  

        //不支持指纹识别,LOG出错误详情  

  

        switch (error.code) {  

            case LAErrorTouchIDNotEnrolled:  

            {  

                NSLog(@"TouchID is not enrolled");  

                break;  

            }  

            case LAErrorPasscodeNotSet:  

            {  

                NSLog(@"A passcode has not been set");  

                break;  

            }  

            default:  

            {  

                NSLog(@"TouchID not available");  

                break;  

            }  

        }  

  

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

        [self showPasswordAlert];  

    }  

}  

[objc] view
plain copy

 





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


操作流程:首先判断系统版本,
iOS 8
及以上版本执行
-(void)authenticateUser
方法,方法自动判断设备是否支持和开启
Touch ID

转载自:http://blog.csdn.net/haogaoming123/article/details/44194819
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息