0

我已经在我的项目中使用 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 中运行良好......

4

1 回答 1

0

终于从苹果那里得到了以下答案。

您似乎已经针对 iOS 11.x SDK 构建了您的应用程序。在 iOS 12 之前,iPad 的 Face ID 功能被禁用,这就是它被识别为 Touch ID 的原因。

请确保您使用最新的 Xcode 构建应用程序,即针对 iOS 12.x SDK

于 2019-04-02T05:35:27.023 回答