NetInfo
NetInfo
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 enum
ConnectionType
描述设备用于与网络进行通信的连接类型。
以下各项的跨平台值ConnectionType
: - none
- 设备处于脱机状态 - wifi
- 设备处于联机状态并通过wifi
连接,或者是iOS模拟器 - cellular
- 设备通过Edge,3G,WiMax或LTE连接unknown
- 错误情况和网络状态未知
仅适用于Android的值ConnectionType
: - bluetooth
- 设备通过蓝牙连接 - ethernet
- 设备通过以太网连接 - wimax
- 设备通过WiMAX连接
EffectiveConnectionType enum
Cross platform values for EffectiveConnectionType
: - 2g
- 3g
- 4g
- unknown
Android
要请求网络信息,您需要将以下行添加到您的应用AndroidManifest.xml
:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
isConnectionExpensive
在Android上可用。检测当前活动连接是否被计量。由于货币成本,数据限制或电池/性能问题,当用户对该连接上的大量数据使用敏感时,网络被分类为计量。
NetInfo.isConnectionExpensive()
.then(isConnectionExpensive => {
console.log('Connection is ' + (isConnectionExpensive ? 'Expensive' : 'Not Expensive')
})
.catch(error => {
console.error(error
}
isConnected
适用于所有平台。异步获取布尔值以确定Internet连接。
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(
'change',
handleFirstConnectivityChange
}
NetInfo.isConnected.addEventListener(
'change',
handleFirstConnectivityChange
Connectivity Types (deprecated)
以下连接类型已弃用。它们被已弃用的API fetch
和change
事件使用。
iOS连接类型(不赞成使用): - none
- 设备处于离线状态 - wifi
- 设备在线并通过WiFi连接,或者是iOS模拟器 - cell
- 设备通过Edge,3G,WiMax或LTE连接 - unknown
- 错误情况和网络状态为未知
Android连接类型(不建议使用)。- NONE
- 设备处于脱机状态 - BLUETOOTH
- 蓝牙数据连接。- DUMMY
- 虚拟数据连接。- ETHERNET
- 以太网数据连接。- MOBILE
- 移动数据连接。- MOBILE_DUN
- DUN特定的移动数据连接。- MOBILE_HIPRI
高优先级移动数据连接。- MOBILE_MMS
- 特定于MMS的移动数据连接。- MOBILE_SUPL
- SUPL特定的移动数据连接。- VPN
使用一个或多个本地承载的虚拟网络。需要API Level 21 - WIFI
- WIFI
数据连接。- WIMAX
- WiMAX数据连接。- UNKNOWN
- 未知的数据连接。
其他连接类型被Android API隐藏,但可以根据需要使用。
方法
static addEventListener(eventName, handler)
添加一个事件处理程序。支持的事件:
connectionChange
:当网络状态改变时触发。事件处理程序的参数是一个带有键的对象:
static removeEventListener(eventName, handler)
删除网络状态更改的侦听器。
static fetch()
此功能已弃用。getConnectionInfo
改为使用。返回使用上面列出的某个不推荐使用的连接类型解决的承诺。
static getConnectionInfo()
返回解析为将对象与一个承诺type
和effectiveType
键,其值是一个ConnectionType
与一个EffectiveConnectionType
分别(如上所述)。
static isConnectionExpensive()
属性
isConnected: ObjectExpression
与上述方法相同的对象,但侦听器接收表示Internet连接的布尔值。如果您只对设备是否具有互联网连接感兴趣,请使用此功能。