@react-native-community/netinfo
Android & iOS的回放原生网络信息API. 它允许您获取以下信息:
- 在线/离线状态
- 连接类型
- 连接质量
开始
使用 Yarn 中任何一种安装库 :
yarn add @react-native-community/netinfo
或 npm 类型 :
npm install --save @react-native-community/netinfo
然后,您需要将库的本地部分链接到你使用的平台。 链接库的最简单方式是使用 CLI 工具, 从您的工程根运行此命令 :
react-native link @react-native-community/netinfo
如果无法或不愿使用 CLI 工具,也可以使用下面的指令手动链接库(点击箭头显示它们):
手动链接 iOS 上的库
要么跟着 react 本地文档中的指令 以手动链接框架或链接 茧类 将此添加到您的 Podfile数字 :
pod 'react-native-netinfo', :path => '../node_modules/@react-native-community/netinfo'
在Android上手动链接库
作出下列修改:
android/settings.gradle
include ':react-native-community-netinfo'
project(':react-native-community-netinfo').projectDir = new File(rootProject.projectDir, '../node_modules/@react-native-community/netinfo/android')
android/app/build.gradle
dependencies {
...
implementation project(':react-native-community-netinfo')
}
android/app/src/main/.../MainApplication.java
在进口方面:
import com.reactnativecommunity.netinfo.NetInfoPackage;
添加数据 RNLocationPackage 分类到导出软件包列表.
@Override
protected List<ReactPackage> getPackages() {
return Arrays.asList(
new MainReactPackage(),
new NetInfoPackage()
);
}
从核心移动 react-native 模块
这个模块是在NetInfo从React Introduct核心分出时创建的. 要迁移到此模块, 您需要遵循上面的安装指令, 然后更改您从 :
import { NetInfo } from "react-native";
改为:
import NetInfo from "@react-native-community/netinfo";
使用量
从导入库开始 :
import NetInfo from "@react-native-community/netinfo";
获取连接信息
返回以 type 财务报告和审定财务报表 effectiveType 值为 a 的键 ConnectionType 还有一个 EffectiveConnectionType页:1.
NetInfo.getConnectionInfo().then(connectionInfo => {
console.log("Connection type", connectionInfo.type);
console.log("Connection effective type", connectionInfo.effectiveType);
});
ConnectionType
跨平台值 :
none- 设备下线了wifi- 设备是在线的,通过wifi连接,或者是iOS模拟器cellular- 设备通过Edge、3G、WiMax或LTE连接unknown- 错误大小写和网络状态未知
Android 仅限值 :
bluetooth- 设备通过蓝牙连接ethernet- 设备通过以太网连接wimax- 设备通过WiMAX连接
EffectiveConnectionType
跨平台值 :
2g3g4gunknown
订阅连接信息
订阅连接信息 。 当连接状态发生变化时,调用即为调用. 返回的对象形状与 getConnectionInfo 见上文.
const listener = connectionInfo => {
console.log("Connection type", connectionInfo.type);
console.log("Connection effective type", connectionInfo.effectiveType);
};
// Subscribe
const subscription = NetInfo.addEventListener('connectionChange', listener);
// Unsubscribe through remove
subscription.remove();
// Unsubscribe through event name
NetInfo.removeEventListener('connectionChange', listener);
已连接
返回一个可以解析出布尔的许诺, 它表示是否有活动连接 .
说明: 这只说明一个设备有主动的连接,而不是它能够接入互联网.
一次获得连接状态 :
NetInfo.isConnected.fetch().then(isConnected => {
console.log("Is connected", isConnected);
});
或订阅更改 :
const listener = isConnected => {
console.log("Is connected", isConnected);
};
// Subscribe
const subscription = NetInfo.isConnected.addEventListener('connectionChange', listener);
// Unsubscribe through remove
subscription.remove();
// Unsubscribe through event name
NetInfo.isConnected.removeEventListener('connectionChange', listener);
连接昂贵( 只有Android)
检测当前活动连接是否被干扰 。 当用户由于货币成本、数据限制或电池/性能问题而对连接方面的大量数据使用敏感时,网络被归类为计量吸入器.
NetInfo.isConnectionExpensive().then(isConnectionExpensive => {
console.log("Is connection expensive", isConnectionExpensive);
});
维护者
- 马特·奥克 - 说吧 Freelance 反应原生开发者
- 迈克·迪亚米德 - 说吧 倒转
捐款
请看 contributing guide。 。 。 .
许可证
图书馆以麻省理工学院的许可发行. 更多信息见 LICENSE。 。 。 .