В настоящее время я работаю над проектом на Android с использованием клиента Expo для реакции на нативную. Я пытаюсь открыть веб-страницу с помощью WebBrowser, передавая URI разработки моего приложения на веб-сайт. Сайт в основном просто перенаправляет на указанный URI через 5 секунд. Однако, кажется, ничего не открывается. Я использовал почти такой же код, как здесь: https://github.com/expo/examples/tree/master/with-webbrowser-redirect. Когда я загружаю этот проект в expo и запускаю, он перенаправляет нормально. Однако, когда я копирую код для веб-сайта и приложения в свой собственный проект, веб-сайт открывается и отображается, но перенаправление ничего не делает. Это просто остается там. Вот код для открытия браузера.
_openBrowserAsync = async () => {
try {
this._addLinkingListener();
let result = await WebBrowser.openBrowserAsync(
'https://wexley-auth.firebaseapp.com/?linkingUri=exp://192.168.1.2:19000'
);
this._removeLinkingListener();
this.setState({ result });
} catch (error) {
alert(error);
console.log(error);
}
};
Связывающий слушатель никогда не запускает обратный вызов, который должен закрыть браузер. URI моего приложения должен быть exp: //192.168.1.2: 19000, поскольку инструменты разработчика expo показывают мне это, когда я подключаюсь по локальной сети. Я также пытался использовать Linking.makeUrl () вместо отправки URI в строке вручную. Ни один из методов не работает для меня. Соответствующий код сайта:
document.addEventListener("DOMContentLoaded", function(event) {
var links = document.querySelectorAll('a');
var baseUri='';
// Take the uri from the params
var qs = decodeURIComponent(document.location.search);
if (qs) {
baseUri = qs.split('?linkingUri=')[1];
}
var redirectInterval = setInterval(function() {
var countdown = document.querySelector('.countdown');
var t = parseInt(countdown.innerText, 10);
t -= 1;
if (t === 0) {
clearInterval(redirectInterval);
window.location.href = baseUri;
}
}, 1000);
});
Я пропустил шаг? Мне нужно настроить схему для открытия моего приложения или это должно работать из коробки? Я использую неправильный URI? Я заметил, что в примере кода app.json содержит следующие поля, которых нет в моем app.json:
"scheme": "expo.examples.with-webbrowser-redirect",
"platforms": [
"android",
"ios"
]