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

How to check net Info in React Native iOS?

我需要在 React Native 中检查互联网连接 iOS

我会尝试以下代码:

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

可以在 React Native android 应用程序中正常工作, 但它总是 return 'false' 反应本机 iOS .

目前在 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 事件类型。

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

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

您还可以查看当前活动的网络连接是否可以访问互联网。

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

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