[React Native]获取网络状态
使用React Native,可以使用NetInfo API获取手机当前的各个网络状态。 componentWillMount() {
NetInfo.fetch().done((status)=> { console.log('Status:'+status); }); }
获取网络状态是异步的,上面使用了Promise机制。 Android端网络状态请求网络信息需要先在应用的AndroidManifest.xml文件中添加如下权限字段,申请相关权限: <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
修改完成后,reaload代码是无效的,因为我们修改了Android原生的配置文件,需要重新执行 Android可获取的状态比较多,上面的status可能有如下的值,直接把文档贴出来了: IOS端网络状态
监听网络改变事件在获取了网络状态后,开发者还可以通过NetInfo API提供的监听器,监听网络状态改变事件。这样当手机网络状态改变时,React Native应用马上收到通知。 componentWillMount() {
NetInfo.fetch().done((status)=> { console.log('Status:' + status); }); //监听网络状态改变 NetInfo.addEventListener('change',this.handleConnectivityChange); } componentWillUnMount() { console.log("componentWillUnMount"); NetInfo.removeEventListener('change',this.handleConnectivityChange); } handleConnectivityChange(status) { console.log('status change:' + status); //监听第一次改变后,可以取消监听.或者在componentUnmount中取消监听 // NetInfo.removeEventListener('change',this.handleConnectivityChange); }
判断是否有网络连接NetInfo API 为开发者提供了isConnected函数用来判断当前手机是否有网络连接。 NetInfo.isConnected.fetch().done((isConnected) => { console.log('First,is ' + (isConnected ? 'online' : 'offline')); });
isConnectionExpensive(仅Android端)NetInfo API为开发者提供了 isConnectionExpensive函数用来判断当前网络连接是否付费的。如果当前连接是通过移动数据网络,或者通过基于移动数据网络所创建的wifi热点,都有可能被判定为计费的数据连接。目前这个函数只为Android平台提供。 NetInfo.isConnectionExpensive((isConnectionExpensive) => { console.log('Connection is ' + (isConnectionExpensive ? 'Expensive' : 'Not Expensive')); });
更多精彩请关注微信公众账号likeDev (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |