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;
这可以按预期工作并且您可以登录,当然现在询问两因素身份验证代码的代码,这在大多数情况下意味着您必须后台应用程序,打开您的身份验证器(authy,谷歌身份验证器等)然后回来到带有代码的应用程序。问题是当我们重新打开应用程序时,CustomTabs 和它的会话完全消失了。这意味着您必须再次单击它,再次登录,一切都会发生同样的事情。我已经寻找了几天的解决方案。任何人都可以帮助我们找到一种方法来保持 CustomTabs 和它的会话打开,这样您就可以填写您的身份验证器代码并从此愉快地登录?