Реактивный родной линк работает только один раз - PullRequest
0 голосов
/ 30 октября 2019

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

Это работает хорошо, но когда пользователь вернулся в приложение, используяКнопка «Назад» отображает пустой экран, и я больше не могу перенаправить пользователя на канал YouTube.

Как я могу заставить работать глубокую ссылку каждый раз? Спасибо !

import React from 'react';
import { View, Text, Linking, Platform } from 'react-native';

class ChaineYT extends React.Component {
  state = {
    isLoading:false,
    isLinked: false
  }

  componentDidMount = () => {
    Linking.openURL('http://www.youtube.com/channel/UC1UpcbyFVTZTDrvdjNmSzSg');
      this.setState({isLoading:true, isLinked:true});
        if(this.state.isLoading && this.state.isLinked){
        this.props.navigation.navigate('Acceuil')
      }
  }

  render() {
    return (
      <View>

      </View>
    )
  }
}

export default ChaineYT

Как управлять приложением YouTube в фоновом режиме?

1 Ответ

0 голосов
/ 30 октября 2019

Вам придется использовать AppState для этого

import React from 'react';
import { View, Text, Linking, Platform, AppState } from 'react-native';

class ChaineYT extends React.Component {
  state = {
    isLoading:false,
    isLinked: false,
    appState: AppState.currentState,

  }

  componentDidMount = () => {
    Linking.openURL('http://www.youtube.com/channel/UC1UpcbyFVTZTDrvdjNmSzSg');
      this.setState({isLoading:true, isLinked:true});

    AppState.addEventListener('change', this._handleAppStateChange);

  }

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

  _handleAppStateChange = (nextAppState) => {
    if (
      this.state.appState.match(/inactive|background/) &&
      nextAppState === 'active'
    ) {
       if(this.state.isLoading && this.state. isLinked){
        this.props.navigation.navigate('Acceuil')
      }
    }
    this.setState({appState: nextAppState});
  };

  render() {
    return (
      <View>

      </View>
    )
  }
}

export default ChaineYT
...