TL;DR: アプリがバックグラウンドになると CustomTabs が閉じますが、アクティブなままにする必要があります。どうすればこれを達成できますか?
CustomTabs を使用してユーザーをログインさせるアプリがあります。2 要素認証を追加しましたが、これにより問題が発生します。ログイン ボタンをタップすると、カスタム タブ インテントが次のように起動されます。
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;
これは期待どおりに機能し、ログインできます。もちろん、2 要素認証コードのコードが要求されます。これは、ほとんどの場合、アプリをバックグラウンドで実行し、オーセンティケーター (auth、Google オーセンティケーターなど) を開いてから戻ってくる必要があることを意味します。コードでアプリに。問題は、アプリを再度開くと、CustomTabs とそのセッションが完全になくなっていることです。これは、もう一度クリックして再度ログインする必要があることを意味し、同じことがすべて発生します。私は何日も解決策を探してきました。CustomTabs とそのセッションを開いたままにしておく方法を見つけるのを手伝ってくれる人はいますか?