23

在此处输入图像描述

无论在 Device 的 passcode 和 touchId settings 中配置了什么设置,LAContext 总是返回 none。它只是给我一个警告,而不是例外。

它仅在 iOS11.1 beta 中的 XCode 9.1 Beta 中工作,如建议:(

4

4 回答 4

34

我才发现问题!您必须要求canEvaluatePolicy正确biometryType设置。

例子:

func isFaceIdSupported() -> Bool {
    if #available(iOS 11.0, *){
        if context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: nil) {
            return context.biometryType == LABiometryType.typeFaceID
        }
    }

    return false
}

根据Apple docs for biometryType:

“此属性仅在 canEvaluatePolicy(_:error:) 生物识别策略成功时设置。默认值为无。”

于 2017-10-23T23:05:25.107 回答
4

在这里遇到同样的问题,用下面的代码修复它。但它仅适用于 Xcode 9.1 Beta(以及模拟器中的 iOS 11.1 Beta)。

if (laContext.canEvaluatePolicy(LAPolicy.deviceOwnerAuthenticationWithBiometrics, error: nil)) {

            if #available(iOS 11.0, *) {
                if (laContext.biometryType == LABiometryType.faceID) {
                    print("FaceId support")
                } else if (laContext.biometryType == LABiometryType.touchID) {
                    print("TouchId support")
                } else {
                    print("No Biometric support")
                }
            } else {
                // Fallback on earlier versions
            }
}
于 2017-10-05T07:15:35.203 回答
4

如果您使用来自@Ermish 的代码,如果设备上没有注册的面孔,isFaceIdSupported() 将返回 false。根据我在 iOS SDK 11.1 上的最新测试显示,只需调用 laContext.canEvaluatePolicy 函数而不关心结果,然后检查 laContext.biometryType 的内容。

如果没有注册人脸,canEvaluatePolicy 将失败,但设备支持 Face ID。

于 2017-11-27T21:20:48.837 回答
0

在 Xamarin.iOS 中,您需要先评估策略:

   NSError error;
   bool success = context.CanEvaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics, out error);
   if (context.BiometryType == LABiometryType.TouchId)
   {
       //Do Something
   }
于 2019-07-25T12:37:50.360 回答