如何检查react-native应用程序中的网络状态

时间:2017-01-17 05:20:36

标签: react-native react-native-android react-native-ios

我正在努力解决这一问题,如果在我的手机中我的网络连接不良,有些我如何调用该服务,则需要更多时间来调用该服务

  • 是否有可能增加提取超时(或)
  • 如何告诉用户您的互联网连接不佳。

    为了检查互联网连接,我使用了networkInfo,但它只对连接是否有帮助,但它没有提供任何有关网络速度的信息。

如果可能,任何人都可以给我一些建议,如何解决这个问题,任何帮助都非常感激  我使用 react-native版本:0.29.0

6 个答案:

答案 0 :(得分:11)

如果您只是想知道设备是否具有有效的互联网连接,您可以使用例如来自React Native isConnectedNetInfo

import { NetInfo } from "react-native";

NetInfo.isConnected.addEventListener(
  "connectionChange",
  hasInternetConnection =>
    console.debug("hasInternetConnection:", hasInternetConnection)
);

但是我不知道如何找出连接有多好。

答案 1 :(得分:4)

NetInfo.getConnectionInfo().then((connectionInfo) => {
  console.log('Initial, type: ' + connectionInfo.type + ', effectiveType: '    + connectionInfo.effectiveType);
});
function handleFirstConnectivityChange(connectionInfo) {
  console.log('First change, type: ' + connectionInfo.type + ', effectiveType: ' + connectionInfo.effectiveType);
  NetInfo.removeEventListener(
    'connectionChange',
    handleFirstConnectivityChange
  );
}
NetInfo.addEventListener(
  'connectionChange',
  handleFirstConnectivityChange
);

这是react-native documentation中代码的副本,有效类型指定网络是2G,3G,EDGE还是4G。

答案 2 :(得分:1)

在react native 0.60中,不建议直接从react native包中导入netinfo。您必须使用从顶部的“ @ react-native-community / netinfo”导入NetInfo; 及其不同的程序包,该程序包需要链接到本机代码。然后,您可以使用以前使用过的NetInfo函数,如

NetInfo.isConnected.addEventListener( "connectionChange", hasInternetConnection => console.debug("hasInternetConnection:", hasInternetConnection) );

请检查Github文档中是否有相同的React native netinfo

答案 3 :(得分:0)

这里是示例:

import { NetInfo,Alert } from 'react-native';

const netStatus = await NetInfo.fetch()  

if (netStatus === 'none' || netStatus === 'NONE') {
    Alert.alert("Internet not connected.!!!")
    return []
}else{ 
    Alert.alert("Internet connected.!!! ")
}

答案 4 :(得分:0)

您可以使用名为react-native-offline的模块

以下是该网站上提供的道具

**

type Props = {
    children: React.Node,
    pingTimeout?: number = 10000,
    pingServerUrl?: string = 'https://www.google.com/',
    shouldPing?: boolean = true,
    pingInterval?: number = 0,
    pingOnlyIfOffline?: boolean = false,
    pingInBackground?: boolean = false,
    httpMethod?: HTTPMethod = 'HEAD',
}

**

答案 5 :(得分:0)

stackoverflow的许多地方都提到了这个问题。对于较新版本的react native,您应该使用“ @ react-native-community / netinfo”库。 NetInfo曾经是react-native的一部分,但是后来它脱离了核心。如果要观察网络状态的变化,请使用提供的addEventListener方法。

import NetInfo from "@react-native-community/netinfo";

NetInfo.fetch().then(state => {
    console.log("Connection type", state.type);
    console.log("Is connected?", state.isConnected);
});

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

// Unsubscribe
unsubscribe();