TL;DR: CustomTabs закрываются, когда приложение находится в фоновом режиме, но нам нужно, чтобы оно оставалось активным. Как мы можем этого добиться?
У нас есть приложение, которое использует CustomTabs для входа пользователя. Мы добавили двухфакторную аутентификацию, но это создает проблему. Когда вы нажимаете кнопку входа в систему, намерение пользовательских вкладок запускается следующим образом:
var tcs = new TaskCompletionSource<BrowserResult>();
try
{
var activity = (Activity)Forms.Context;
var builder = new CustomTabsIntent.Builder().EnableUrlBarHiding();
var customTabsIntent = builder.Build();
customTabsIntent.Intent.AddFlags(ActivityFlags.NoHistory);
Action<string> callback = null;
callback = url =>
{
MainActivity.Callbacks -= callback;
tcs.SetResult(new BrowserResult
{
ResultType = BrowserResultType.Success,
Response = url
});
};
MainActivity.Callbacks += callback;
customTabsIntent.LaunchUrl(activity, Android.Net.Uri.Parse(options.StartUrl));
}
catch (Exception ex)
{
throw new Exception($"error: {ex.Message}");
}
return tcs.Task;
Это работает, как и ожидалось, и вы можете войти в систему, конечно, теперь запрашивается код для кода двухфакторной аутентификации, что в большинстве случаев означает, что вы должны запустить приложение в фоновом режиме, открыть свой аутентификатор (аутентификация, аутентификатор Google и т. д.), а затем вернуться в приложение с кодом. Проблема в том, что когда мы снова открываем приложение, CustomTabs и его сеанс полностью исчезают. Это означает, что вам нужно снова щелкнуть по нему, снова войти в систему, и то же самое происходит снова и снова. Я искал решение в течение нескольких дней. Может ли кто-нибудь помочь нам найти способ оставить CustomTabs и его сеанс открытыми, чтобы вы могли просто ввести свой код аутентификатора и долго и счастливо войти в систему?