您的位置:首页 > 移动开发 > Objective-C

iOS开发 Object-C 与 Swift 中的Touch ID开发

2016-03-07 15:29 531 查看
Object-C Touch ID 验证

导入库



#import <LocalAuthentication/LocalAuthentication.h>

- (IBAction)btnClick:(UIButton *)sender {

//初始化上下文对象

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

dispatch_async(dispatch_get_main_queue(), ^{

UIAlertView * alert = [[UIAlertView
alloc]initWithTitle:@"Touch ID"
message:@"验证成功"
delegate:nil
cancelButtonTitle:@"好的"
otherButtonTitles: nil];

[alert show];

});

}

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

}

}

Swift Touch ID 验证

导入库 跟 Object-C 一样framework 就可以了

func MyBtnClick(sender:
MyButton) {

print("-------",sender)

let laContext =
LAContext()

var authError :
NSError?

let errorReason =
"需要验证Touch ID"

if laContext.canEvaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics,
error: &authError){

laContext.evaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics, localizedReason: errorReason, reply: {

(success, error) in

if success {

print (
"Touch ID 验证成功")

}

else{

print (
"Touch ID 验证失败")

}

})

}

else{

let alert =
UIAlertView(title: "Can not do authenticatation", message:
String(authError), delegate:
nil, cancelButtonTitle: "Cancel")

alert.show()

}

}

附:

/*

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

*/
谢谢浏览!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: