Платформы
Эта проблема связана с 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);
}
}
}