Ключ isInternetReachable всегда возвращает false в течение минуты в iOS всякий раз, когда приложение выходит на передний план из фона в реагирующем - PullRequest
0 голосов
/ 18 марта 2020

Платформы

Эта проблема связана с iOS.

Версии

  • iOS: 12.4.1
  • реагировать native-netinfo: "^ 5.5.0"
  • реакция-натив: "0.61.5"
  • реакция: "16.9.0"

Описание

Я работаю над реализацией проверки состояния сети в проекте с динамическими данными c и проверкой достижимости inte rnet при каждом вызове API или изменении состояния приложения.

Моя проблема является то, что ключ isInternetReachable всегда возвращает false в течение минуты, прежде чем вернуть правильное состояние, когда приложение выходит на передний план из фона, даже если inte rnet достижимо. Проблема возникает на iOS реальном устройстве, и все отлично работает на iOS симуляторе и android реальном устройстве.

Воспроизводимая демонстрация

let state;
componentDidMount() {
        // Adding AppState event listener
        AppState.addEventListener('change', this._handleAppStateChange);
        // Adding NetInfo event listener
        this._subscription = NetInfo.addEventListener(
            this._handleConnectionInfoChange,
        );
    }
 componentWillUnmount() {
        // Removing AppState event listener
        AppState.removeEventListener('change', this._handleAppStateChange);
        // Removing NetInfo event listener
        this._subscription && this._subscription();
    }
_handleAppStateChange = async nextAppState => {
        if (this.state.appState.match(/inactive|background/) && nextAppState === 'active') {
            state = await NetInfo.fetch();
            });
        }
        if (this.state.appState.match(/active|inactive/) && nextAppState === 'background') {
            state = await NetInfo.fetch();
            });
        }
        if (this.state.appState.match(/active|background/) && nextAppState === 'inactive') {
            state = await NetInfo.fetch();
            });
        }
        this.setState({ appState: nextAppState });
    };
 getJobs = async (index) => {
        // fetching status of internet connection
        state = await NetInfo.fetch();
            if (state.isInternetReachable === false) {
                Alert.alert(Constants.k_APP_NAME, Constants.k_OFFLINE_TEXT);
            } else {
                this.props.callService(item, false);
            }
        }
    }
...