Как перенаправить приложение из WebBrowser в Expo - PullRequest
0 голосов
/ 22 октября 2019

В настоящее время я работаю над проектом на 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"
]
...