NetInfo

NetInfo模块可以获知设备联网或离线的状态信息。

1:以下方法可以获取设备的的网络状态信息,既可以判断是否联网,又可以获取网络状态信息。fetch返回promise

1) 第一次进来会执行

NetInfo.fetch().done(callback);

2) 第一次进来和网络变化都会执行

NetInfo.addEventListener("change",callback);

3) 去掉事件监听

NetInfo.removeEventListener('change',callback);

4) callback

function callback(reach){ console.log('网络状态: ' + reach); }

5) IOS中reach的值

  • none - 设备处于离线状态。
  • wifi - 设备处于联网状态且通过wifi链接,或者是一个iOS的模拟器。
  • cell - 设备是通过Edge、3G、WiMax或是LTE网络联网的。
  • unknown - 发生错误,网络状况不可知

6) Android中reach的值

请求网络信息需要先在应用的AndroidManifest.xml文件中添加如下权限字段:

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

  • NONE - 设备处于离线状态
  • BLUETOOTH - 蓝牙数据连接
  • DUMMY - 模拟数据连接
  • ETHERNET - 以太网数据连接
  • MOBILE - 移动网络数据连接(2g,3g,4g)
  • MOBILE_DUN - 拨号移动网络数据连接
  • MOBILE_HIPRI - 高优先级移动网络数据连接
  • MOBILE_MMS - 彩信移动网络数据连接
  • MOBILE_SUPL - 安全用户面定位(SUPL)数据连接
  • VPN - 虚拟网络连接。需要Android5.0以上
  • WIFI - WIFI数据连接
  • WIMAX - WiMAX数据连接
  • UNKNOWN - 未知数据连接

2:以下方法仅用来判断是否联网,不会显示网络状态值

1) 第一次进来会执行

NetInfo.isConnected.fetch().done(callback)

2) 第一次进来和网络变化都会执行

NetInfo.isConnected.addEventListener("change",callback);

3) 去掉事件监听

NetInfo.isConnected.removeEventListener('change',callback);

4) callback

function callback(isConnected){ console.log('是否联网: ' + (isConnected ? "是" : "否")); }

3:isConnectionExpensive

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

通过无线wifi连接和未联网,返回true,如果是2g,3g,4g,返回false

1) 第一次进来会执行,当网络变化时候不会执行,所以需要在网络监听变化回调里在执行一次

NetInfo.isConnectionExpensive().then(callback) NetInfo.isConnected.addEventListener("change",(isConnected) => { NetInfo.isConnectionExpensive().then(callback) });

2) callback

function callback(isConnectionExpensive){ console.log('是否计费: ' + (isConnectionExpensive ? "是" : "否")); }

results matching ""

    No results matching ""