Xamarin.Auth Google Presenter не закрывается в приложении Android Xamarin.Forms

Я использую Xamarin.Form, чтобы написать приложение для Android. Я успешно внедрил OAuth, и я могу войти в систему и получить информацию о пользователе с помощью OAuth2Authenticator.

Когда пользователь нажимает на кнопку "Зарегистрироваться / Войти", я показываю OAuthLoginPresenter следующим образом:

var oAuthLoginPresenter = new Xamarin.Auth.Presenters.OAuthLoginPresenter();
oAuthLoginPresenter.Login(App.OAuth2Authenticator);

Это прекрасно работает, и пользователь видит страницу входа.

Когда пользователь нажимает кнопку "Разрешить", завершенное событие в экземпляре OAuth2Authenticator срабатывает, как и ожидалось, и пользователь снова смотрит на приложение.

Однако вот где моя проблема - я получаю уведомление:

Если экран входа в CustomTabs не закрывается, автоматически закройте вкладки CustomTabs, вернувшись обратно в приложение.

Дело в том, что я вернулся в приложение. Если я посмотрю на все свои открытые приложения, то увижу, что экран входа все еще работает на заднем плане, так что докладчик не закрылся.

В моем перехвате Activity, который получает перенаправление, выглядит так:

[Activity(Label = "GoogleAuthInterceptor")]
[IntentFilter
(
    actions: new[] { Intent.ActionView },
    Categories = new[]
    {
            Intent.CategoryDefault,
            Intent.CategoryBrowsable
    },
    DataSchemes = new[]
    {
        // First part of the redirect url (Package name)
        "com.myapp.platform"
    },
    DataPaths = new[]
    {
        // Second part of the redirect url (Path)
        "/oauth2redirect"
    }
)]

public class GoogleAuthInterceptor: Activity
{
    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);

        // Create your application here
        Android.Net.Uri uri_android = Intent.Data;

        // Convert Android Url to C#/netxf/BCL System.Uri
        Uri uri_netfx = new Uri(uri_android.ToString());

        // Send the URI to the Authenticator for continuation
        App.OAuth2Authenticator?.OnPageLoading(uri_netfx);

        Finish();
    }
}

Я пропускаю шаг, чтобы закрыть этого докладчика? Любые другие идеи, пожалуйста?

ОБНОВИТЬ:

Теперь я обнаружил, что использование Chrome в качестве браузера по умолчанию работает нормально, а ведущий закрыт. Но если я использую браузер Samsung в качестве браузера по умолчанию - он не закрывается.

Поэтому мне нужен способ закрыть его вручную.

1 ответ

Просто установите свойство в null при инициализации Xamarin.Auth в вашей основной деятельности:

//don't show warning message when closing account selection page
CustomTabsConfiguration.CustomTabsClosingMessage = null;
Другие вопросы по тегам