Как обрабатывать ошибки в биометрической аутентификации для iOS в Xamarin? - PullRequest
0 голосов
/ 04 июня 2018
if (context.CanEvaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics, out AuthError)){
    var replyHandler = new LAContextReplyHandler((success, error) => {
        this.InvokeOnMainThread(()=> {
            if(success)
            {
                Console.WriteLine("You logged in!");
                PerformSegue("AuthenticationSegue", this);
            }
            else
            {
                // Show fallback mechanism here
            }
        });
    });
    context.EvaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics, myReason, replyHandler);
};

Я хочу обработать ошибки в условии else в зависимости от типа ошибки.

1 Ответ

0 голосов
/ 04 июня 2018

Вы можете получить код ошибки из возвращенного NSError и обработать его по кодам LAStatus:

switch (error.Code)
{
    case (long)LAStatus.AuthenticationFailed:
        ~~~
        break;
    case (long)LAStatus.UserCancel:
        ~~~
        break;
    ~~~
    default:
        break;
}

LAStatus (с удаленными амортизациями):

public enum LAStatus : long
{
    Success,
    AuthenticationFailed = -1L,
    UserCancel = -2L,
    UserFallback = -3L,
    SystemCancel = -4L,
    PasscodeNotSet = -5L,
    AppCancel = -9L,
    InvalidContext = -10L,
    BiometryNotAvailable = -6L,
    BiometryNotEnrolled = -7L,
    BiometryLockout = -8L,
    NotInteractive = -1004L
}

Для описания различных кодов вы можете использовать LAError.Code:

...