跳到主要内容
新架构实战课 实操 + 基建 + 原理全维度包揽,抢先掌握 React Native 新架构精髓 立即查看 >

NetInfo

已过时。 Use react-native-community/react-native-netinfo instead.

通过 NetInfo 模块可以获取设备当前的联网状态。

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
);

ConnectionType 枚举值

ConnectionType描述了设备联网的方式。

ConnectionType有如下跨平台可用的值:

  • none - 设备处于离线状态
  • wifi - 设备通过 wifi 联网,或者设备是 iOS 模拟器
  • cellular - 设备通过蜂窝数据流量联网
  • unknown - 联网状态异常

ConnectionType还有如下仅在 Android 平台上可用的值:

  • bluetooth - 设备通过蓝牙协议联网
  • ethernet - 设备通过以太网协议联网
  • wimax - 设备通过 WiMAX 协议联网

EffectiveConnectionType 枚举值

EffectiveConnectionType有如下跨平台可用的值:

  • 2g
  • 3g
  • 4g
  • unknown

Android

要在 Android 上获取联网状态,还需要在AndroidManifest.xml中添加如下权限请求:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

查看方法

查看属性


文档

方法

addEventListener()

NetInfo.addEventListener(eventName, handler);

添加一个事件监听函数。

参数:

名称类型必需说明
eventNameenum(connectionChange, change)事件名
handlerfunction监听函数

支持的事件名:

  • connectionChange:当联网状态改变时触发。传给监听函数的参数是一个对象,包含有下列属性:
    • type: 上面所列出的ConnectionType
    • effectiveType: 上面所列出的EffectiveConnectionType
  • change: 这一事件已过时。请使用connectionChange代替。当联网状态改变时触发。

removeEventListener()

NetInfo.removeEventListener(eventName, handler);

移除联网状态改变的监听函数。

参数:

名称类型必需说明
eventNameenum(connectionChange, change)事件名
handlerfunction监听函数

getConnectionInfo()

NetInfo.getConnectionInfo();

返回一个 promise,最终解析值为带有typeeffectiveType属性的对象。其中type属性的值为ConnectionType ,而effectiveType属性的值为EffectiveConnectionType)。


isConnectionExpensive()

NetInfo.isConnectionExpensive();

仅 Android 可用。用于判断当前活动的连接是否计费。如果当前连接是通过移动数据网络,或者通过基于移动数据网络所创建的 wifi 热点,或是大量消耗电池等等,都有可能被判定为计费的数据连接。

NetInfo.isConnectionExpensive()
.then(isConnectionExpensive => {
console.log('Connection is ' + (isConnectionExpensive ? 'Expensive' : 'Not Expensive'));
})
.catch(error => {
console.error(error);
});

属性

isConnected

在所有平台上可用。以异步方式获取一个布尔值,用于判断当前设备是否联网。

NetInfo.isConnected.fetch().then(isConnected => {
console.log('First, is ' + (isConnected ? 'online' : 'offline'));
});
function handleFirstConnectivityChange(isConnected) {
console.log('Then, is ' + (isConnected ? 'online' : 'offline'));
NetInfo.isConnected.removeEventListener(
'connectionChange',
handleFirstConnectivityChange
);
}
NetInfo.isConnected.addEventListener(
'connectionChange',
handleFirstConnectivityChange
);