Определите, поддерживает ли устройство iOS TouchID без установки пароля

В настоящее время я разрабатываю приложение для iOS, которое позволяет пользователям входить в приложение с помощью TouchID, но сначала они должны сначала установить пароль внутри приложения. Проблема в том, чтобы показать опцию пароля настройки для включения входа в систему TouchID, мне нужно определить, поддерживает ли устройство iOS TouchID.

Использование LAContext и canEvaluatePolicy (как ответы здесьЕсли устройство поддерживает Touch ID), Я могу определить, поддерживает ли текущее устройство TouchIDесли пользователь установил пароль на своем устройстве iOS, Вот мой фрагмент кода (я использую Xamarin, поэтому он в C #):

static bool DeviceSupportsTouchID () 
{
    if (UIDevice.CurrentDevice.CheckSystemVersion(8, 0))
    {
        var context = new LAContext();
        NSError authError;
        bool touchIDSetOnDevice = context.CanEvaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics, out authError);

        return (touchIDSetOnDevice || (LAStatus) Convert.ToInt16(authError.Code) != LAStatus.TouchIDNotAvailable);
    }

    return false;
}

Если пользовательне настроил пароль устройства, authError просто вернется "PasscodeNotSetmsgstr "ошибка независимо от того, поддерживает ли устройство TouchID или нет.

Если устройство пользователя поддерживает TouchID, я хочу всегда отображать опцию TouchID в своем приложении независимо от того, установил ли пользователь пароль на своем устройстве (я просто предупрежу пользователя, чтобы он сначала установил пароль на своем устройстве). И наоборот, если устройство пользователя не поддерживает TouchID, я, очевидно, не хочу показывать опцию TouchID в своем приложении.

Итак, мой вопрос: есть ли хороший способ последовательно определить, поддерживает ли устройство iOS TouchID, независимо от того, установил ли пользователь пароль на своем устройстве?

Единственный обходной путь, который я могу придумать, - это определить архитектуру устройства (на который дан ответ вОпределите, является ли устройство iOS 32- или 64-разрядным), так как TouchID поддерживается только на устройствах с 64-битной архитектурой. Тем не менее, я смотрю, есть ли лучший способ сделать это.

Спасибо заранее! :)

Ответы на вопрос(6)

Ваш ответ на вопрос