#android #xamarin.forms #xamarin.android
#Android #xamarin.forms #xamarin.android
Вопрос:
Я работаю над приложением с пользовательской схемой URL. Он открывает некоторую веб-страницу для аутентификации на вкладке Chrome. Это делается в формах xamarin следующим образом:
Browser.OpenAsync(apiUrl "mobile", new BrowserLaunchOptions
{
LaunchMode = BrowserLaunchMode.SystemPreferred,
TitleMode = BrowserTitleMode.Hide,
});
все будет работать так, как ожидалось, если я верну веб-страницу со ссылкой и нажму на ссылку вручную:
<a href="myscheme://myhost/myparameters">Click here to go the app</a>
Но если я верну перенаправление 302 на тот же URL, это не закроет вкладку Chrome и не сфокусирует приложение снова.
Если я добавлю javascript в ответ, он не откроет URL автоматически (закройте вкладку Chrome и сфокусируйте приложение)
Я пробовал подобные вещи:
window.location = url;
window.open(url,'_self');
setTimeout(()=>window.open(url,'_self'),10);
(url-адрес является допустимой переменной, даже пробовал alert (url) после изменения местоположения, и он показывает правильный URL.
Почему это работает только тогда, когда я нажимаю на ссылку вручную?
Комментарии:
1. Итак, он не работает в эмуляторе, но как только я установил приложение на huawei p20 pro, оно работает..
2. Может ли это сработать?
Ответ №1:
В целях обеспечения безопасности и удобства пользователя браузер запрещает прямое использование window.open(URL)
in JS для открытия новых ссылок.
Попробуйте изменить, как показано ниже:
setTimeout(()=>window.open(url,'_self'),500); //The delay time must not be too short or you will be intercepted