Android и настраиваемая схема URL

#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