react native之获知设备联网或离线的状态信息。
|
NetInfo模块可以获知设备联网或离线的状态信息。 NetInfo.fetch().done((reach) => {
console.log('Initial: ' + reach);
});
function handleFirstConnectivityChange(reach) {
console.log('First change: ' + reach);
NetInfo.removeEventListener(
'connectionChange',handleFirstConnectivityChange
);
}
NetInfo.addEventListener(
'connectionChange',handleFirstConnectivityChange
);
IOS以异步的方式判断设备是否联网,以及是否使用了移动数据网络。
Android请求网络信息需要先在应用的 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> Android的联网类型:
其他的连接状态已被Android API隐藏,但可以在需要时使用。 isConnectionExpensive此方法仅Android可用。用于判断当前活动的连接是否计费。如果当前连接是通过移动数据网络,或者通过基于移动数据网络所创建的wifi热点,都有可能被判定为计费的数据连接。 NetInfo.isConnectionExpensive((isConnectionExpensive) => {
console.log('Connection is ' + (isConnectionExpensive ? 'Expensive' : 'Not Expensive'));
});
isConnected此方法所有平台皆可使用。以异步方式获取一个布尔值,用于判断当前设备是否联网。 NetInfo.isConnected.fetch().done((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
);
方法:static addEventListener(eventName,handler) 在网络状况/类型发生变化时调用此监听函数。回调的参数为上面列出的网络状况/类型。 static removeEventListener(eventName,handler)# 移除网络状况/类型变化的监听函数。 static fetch() 返回一个promise,用于获取当前的网络状况/类型。 static isConnectionExpensive() 属性:isConnected: 此属性为一个对象,也可调用上面列出的方法。但其监听函数接受的参数为一个布尔值,仅仅能表明当前网络是否联通。如果你只关心设备是否连上网了(不关心网络类型),那么使用此属性即可。 /**
*
* NetInfo模块可以获知设备联网或离线的状态信息。
*
*/
import React,{ Component } from 'react';
import {
AppRegistry,StyleSheet,Text,View,NetInfo
} from 'react-native';
class NetInfoDemo extends Component {
constructor(props){
super(props)
this.state={
connectionInfo: "",//网络连接类型
isConnected:"" //网络是否连接
}
}
render() {
return (
<View>
<Text style={{marginTop:100}}>NetInfo模块可以获知设备联网或离线的状态信息。打开控制台查看</Text>
<Text>当前网络类型:{this.state.connectionInfo}</Text>
<Text>当前网络连接状态:{this.state.isConnected}</Text>
</View>
);
}
componentDidMount(){
var self=this;
//监听网络类型变化
NetInfo.addEventListener("change",self._handleConnectionInfoChange.bind(self))
//监听网络连接状态变化
NetInfo.isConnected.addEventListener('change',self.ChangeIsConnectedState.bind(self));
//初次获取网络类型状态
NetInfo.fetch().done((connectionInfo)=>{ self.setState({connectionInfo:connectionInfo}); });
//初次获取网络连接状态
NetInfo.isConnected.fetch().done((isConnected) => {self.ChangeIsConnectedState(isConnected)});
}
componentWillUnmount(){
var self=this;
//组建删除前卸载监听
NetInfo.removeEventListener("change",self._handleConnectionInfoChange.bind(self))
NetInfo.isConnected.removeEventListener('change',self.ChangeIsConnectedState);
}
_handleConnectionInfoChange(connectionInfo) {
this.setState({connectionInfo:connectionInfo});
}
ChangeIsConnectedState(isConnected){
if(isConnected){
this.setState({isConnected:"在线"})
}else{
this.setState({isConnected:"离线"})
}
}
} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
