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有如下跨平台可用的值:
2g3g4gunknown
Android
要在 Android 上获取联网状态,还需要在AndroidManifest.xml中添加如下权限请求:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
查看方法
查看属性
文档
方法
addEventListener()
jsx
NetInfo.addEventListener(eventName, handler);
添加一个事件监听函数。
参数:
| 名称 | 类型 | 必需 | 说明 |
|---|---|---|---|
| eventName | enum(connectionChange, change) | 是 | 事件名 |
| handler | function | 是 | 监听函数 |
支持的事件名:
connectionChange:当联网状态改变时触发。传给监听函数的参数是一个对象,包含有下列属性:type: 上面所列出的ConnectionType值effectiveType: 上面所列出的EffectiveConnectionType值
change: 这一事件已过时。请使用connectionChange代替。当联网状态改变时触发。
removeEventListener()
jsx
NetInfo.removeEventListener(eventName, handler);
移除联网状态改变的监听函数。
参数:
| 名称 | 类型 | 必需 | 说明 |
|---|---|---|---|
| eventName | enum(connectionChange, change) | 是 | 事件名 |
| handler | function | 是 | 监听函数 |
getConnectionInfo()
jsx
NetInfo.getConnectionInfo();
返回一个 promise,最终解析值为带有type和effectiveType属性的对象。其中type属性的值为ConnectionType ,而effectiveType属性的值为EffectiveConnectionType)。
isConnectionExpensive()
jsx
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
);