iOS 8的SDK开放了Touch ID的接口.从WWDC的视频中能够看到Touch ID应用在两个方面:用于Key Chain加密和用于授权.iOS 8正式版公布以后我们能够看到Evernote的iOS app已经集成了该功能.以下来看看怎样实现使用Touch ID进行身份认证.
error:(NSError * __autoreleasing *)error;
localizedReason:(NSString *)localizedReason
reply:(void(^)(BOOL success, NSError *error))reply;
假设canEvaluatePolicy返回YES,表示设备支持指纹识别,那么便能够调用evaluatePolicy:函数进行指纹识别了.调用evaluatePolicy函数后会弹出一个alert,例如以下图:
NSError *error;
context.localizedFallbackTitle = @"";
if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error])
{
NSLog(@"Touch
ID is available.");
[context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics
Touch ID to log in.", nil)
{
{
NSLog(@"Authenticated
using Touch ID.");
} else {
{
NSLog(@"User
tapped Enter Password");
} else if (error.code == kLAErrorUserCancel)
{
NSLog(@"User
tapped Cancel");
} else {
NSLog(@"Authenticated
failed.");
}];
} else {
NSLog(@"Touch
ID is not available: %@", error);
}
在开发中遇到过一个问题, 不知道是不是bug, 就是启动程序后马上使用Touch ID, 这样会导致身份验证通过了, 可是上述的alert并不会被dismiss. 详情參见https://github.com/RungeZhai/TouchIDIssue