Определите, поддерживает ли устройство 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-битной архитектурой. Тем не менее, я смотрю, есть ли лучший способ сделать это.
Спасибо заранее! :)