Как обновить приложение при открытии из deeplink? - PullRequest
0 голосов
/ 18 декабря 2018

Я борюсь с реагирующим родным приложением.Я бы реализовал реагирование на родную динамическую связь Firebase, но теперь я немного растерялся.Я использую этот метод на HomeScreen, который отлично работает каждый раз, когда кто-то открывает приложение.

async componentWillMount() {
    try {
      let url = await firebase.links().getInitialLink();
      if(url) {
        let api = "example.com/user/123456";
        try {
          this.setState({ data: "John Doe" });
          this.props.navigation.navigate('Preview', {user: this.state.data })
        }
        catch {
        }
      }
    }
    catch {
    }
  }

Но когда приложение уже открыто, этот метод не работает должным образом.Есть ли способ, при котором я могу вызывать функцию каждый раз, когда кто-то возвращается в открытое приложение?

1 Ответ

0 голосов
/ 18 декабря 2018

Просто совет, вы должны поместить свой код в componentDidMount, чтобы не блокировать первоначальный (первый) рендер.

Вы можете использовать AppState для прослушиваниядля изменений в приложениях, помещаемых в фоновом режиме / на переднем плане.

componentDidMount() {
  this.showPreview();
  AppState.addEventListener('change', this.onAppStateChange);
}

componentWillUnmount() {
  AppState.removeEventListener('change', this.onAppStateChange);
}

const onAppStateChange = appState => {
  // You can check if appState is active/background/foreground
  this.showPreview();
}

const showPreview = async (appState) => {
    // You can check if appState is active/inactive/background
    try {
      let url = await firebase.links().getInitialLink();
      if(url) {
        let api = "example.com/user/123456";
        try {
          this.setState({ data: "John Doe" });
          this.props.navigation.navigate('Preview', {user: this.state.data })
        }
        catch {
        }
      }
    }
    catch(e) {
      console.error(e);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...