如何在React Native iOS中查看网络信息?

时间:2017-04-04 05:32:54

标签: javascript react-native react-native-ios

我需要检查本机iOS中的Internet连接

我会尝试以下代码:

NetInfo.isConnected.fetch().then(isConnected => {
   console.log(isConnected);
});

可以在本机android应用程序中正常工作, 但它总是在本机iOS中返回'false'。

2 个答案:

答案 0 :(得分:23)

react native's github目前存在一个未解决的问题。

您可以在那里看到讨论,但简而言之 - fetch始终返回false,但您可以通过侦听连接已更改事件来解决此问题。

来自那里的代码示例:

componentDidMount() {
    NetInfo.isConnected.addEventListener('change', this.handleConnectionChange);

    NetInfo.isConnected.fetch().done(
      (isConnected) => { this.setState({ status: isConnected }); }
    );
}

componentWillUnmount() {
    NetInfo.isConnected.removeEventListener('change', this.handleConnectionChange);
}

handleConnectionChange = (isConnected) => {
        this.setState({ status: isConnected });
        console.log(`is connected: ${this.state.status}`);
}

修改

好像这个问题一直是worked on。 此外,change事件已重命名为connectionChange。更新了解决方法代码:

componentDidMount() {
    NetInfo.isConnected.addEventListener('connectionChange', this.handleConnectionChange);

    NetInfo.isConnected.fetch().done(
      (isConnected) => { this.setState({ status: isConnected }); }
    );
}

componentWillUnmount() {
    NetInfo.isConnected.removeEventListener('connectionChange', this.handleConnectionChange);
}

handleConnectionChange = (isConnected) => {
        this.setState({ status: isConnected });
        console.log(`is connected: ${this.state.status}`);
}

<强>更新

不推荐使用change事件类型。请考虑使用connectionChange事件类型。

答案 1 :(得分:0)

通过使用this模块,您可以订阅网络状态更新

const unsubscribe = NetInfo.addEventListener(state => {
  console.log("Is connected?", state.isConnected);
});

,您还可以找到当前活动的网络连接是否可以访问Internet。

console.log("Is Internet Reachable?", state.isInternetReachable);

我还用源代码解释了react-native-netinfo及其功能here的用法。