iOS 8的SDK開(kāi)放了Touch ID的接口.從WWDC的視頻中可以看到Touch ID應(yīng)用在兩個(gè)方面:用于Key Chain加密和用于授權(quán).iOS 8正式版發(fā)布以后我們可以看到Evernote的iOS app已經(jīng)集成了該功能.下面來(lái)看看如何實(shí)現(xiàn)使用Touch ID進(jìn)行身份認(rèn)證.
需要的類
LAContext : 指紋驗(yàn)證操作對(duì)象
沒(méi)錯(cuò)扣孟!這一個(gè)類就夠用了
首先亥啦,我們要確保設(shè)備是否支持指紋識(shí)別磺平,直接貼代碼
LAContext* context = [[LAContextalloc]init];
//錯(cuò)誤對(duì)象
NSError* error =nil;
//首先使用canEvaluatePolicy判斷設(shè)備支持狀態(tài)
BOOL isSupport = [contextcanEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometricserror:&error]
NSString*alertName =@"提示信息";
if (isSupport) {
//支持指紋驗(yàn)證
[context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:alertName reply:^(BOOL success, NSError *error) {
if (success) {
//驗(yàn)證成功段标,主線程處理UI
dispatch_queue_t mainQueue = dispatch_get_main_queue();
dispatch_sync(mainQueue, ^{
self.label.text = @"驗(yàn)證成功";
});
}
else
{
NSLog(@"%@",error.localizedDescription);
switch (error.code) {
case LAErrorSystemCancel:
{
NSLog(@"Authentication was cancelled by the system");
//切換到其他APP力麸,系統(tǒng)取消驗(yàn)證Touch ID
break;
}
case LAErrorUserCancel:
{
NSLog(@"Authentication was cancelled by the user");
//用戶取消驗(yàn)證Touch ID
break;
}
case LAErrorUserFallback:
{
NSLog(@"User selected to enter custom password");
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
//用戶選擇輸入密碼可款,切換主線程處理
}];
break;
}
default:
{
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
//其他情況,切換主線程處理
}];
break;
}
}
}
}];
}
else
{
//不支持指紋識(shí)別克蚂,LOG出錯(cuò)誤詳情
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);
}```
#總結(jié)
其實(shí)手勢(shì)識(shí)別很簡(jiǎn)單闺鲸,總體來(lái)說(shuō) 只要一個(gè)類,一句代碼埃叭,不過(guò)需要我們判斷的狀態(tài)有那么幾種,我在代碼中已經(jīng)注釋了摸恍。