我已经在我的项目中使用 TouchID,现在我正在尝试使用 FaceId 进行身份验证,并且我正在使用以下代码。
LAContext *myContext = [[LAContext alloc] init];
NSError *authError = nil;
if (![myContext canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&authError])
{
NSLog(@"0001 , EVT, %@, %@, %@",[[self class] description], NSStringFromSelector(_cmd), [authError localizedDescription]);
return NO;
}
if (@available(iOS 11.0, *))
{
if (myContext.biometryType == LABiometryTypeFaceID)
{
NSLog(@"0002 , EVT, %@, %@, FaceID Suppoted Device",[[self class] description],NSStringFromSelector(_cmd));
}
if (myContext.biometryType == LABiometryTypeTouchID)
{
NSLog(@"0002 , EVT, %@, %@, Touched Suppoted Device",[[self class] description],NSStringFromSelector(_cmd));
}
}
myContext.biometryType 总是返回 LABiometryTypeTouchID(1),但我使用的设备是 iOS 12.1.4 的 iPad 11 英寸(只有 faceid 没有 touchid)。
但是,如果我运行以下 evaluatePolicy: faceid UI 会提示。但即使在那之后我得到 myContext.biometryType 返回 LABiometryTypeTouchID(1) ,知道为什么这会返回 LABiometryTypeTouchID(1) 而不是 LABiometryTypeFaceID (2) 吗?
[myContext evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics
localizedReason:myLocalizedReasonString
reply:
注意 - 这在带有 iOS 12.1.4 的 iPhoneX 上完美运行,但在 iPad 11 英寸 iOS 12.1.4 STRANGE 中运行良好......