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);
添加一个事件监听函数。
参数:
名称 | 类型 | 必需 | 说明 |
---|---|---|---|
eventName | enum(connectionChange, change) | 是 | 事件名 |
handler | function | 是 | 监听函数 |
支持的事件名:
connectionChange
:当联网状态改变时触发。传给监听函数的参数是一个对象,包含有下列属性:type
: 上面所列出的ConnectionType
值effectiveType
: 上面所列出的EffectiveConnectionType
值
change
: 这一事件已过时。请使用connectionChange
代替。当联网状态改变时触发。
removeEventListener()
NetInfo.removeEventListener(eventName, handler);
移除联网状态改变的监听函数。
参数:
名称 | 类型 | 必需 | 说明 |
---|---|---|---|
eventName | enum(connectionChange, change) | 是 | 事件名 |
handler | function | 是 | 监听函数 |
getConnectionInfo()
NetInfo.getConnectionInfo();
返回一个 promise,最终解析值为带有type
和effectiveType
属性的对象。其中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
);