Un módulo nativo de reacción para ver y conectarse a redes Wifi en dispositivos Android.
npm install react-native-android-wifi --save
Utilice el enlace react-native para instalar dependencias nativas automáticamente:
react-native link react-native-android-wifi
import wifi from 'react-native-android-wifi';
Permisos: a partir de la API de Android 25, las aplicaciones deben tener el permiso ACCESS_COARSE_LOCATION (o ACCESS_FINE_LOCATION) para obtener resultados.
try {
const granted = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
{
'title': 'Redes wifi',
'message': 'Necesitamos su permiso para encontrar redes wifi'
}
)
if (granted === PermissionsAndroid.RESULTS.GRANTED) {
console.log("¡Gracias! :)");
} else {
console.log("No podrá recuperar la lista de redes wifi disponibles");
}
} catch (err) {
console.warn(err)
}
Estado de la conectividad wifi:
wifi.isEnabled((isEnabled) => {
if (isEnabled) {
console.log("wifi service enabled");
} else {
console.log("wifi service is disabled");
}
});
Activar / desactivar el servicio wifi:
wifi.setEnabled(true);
Iniciar sesión en el dispositivo en una red específica:
Este método no tiene una devolución de llamada cuando la conexión se realizó correctamente, verifique este problema. Se agregó soporte para el modo de seguridad wifi 'WPA2 PSK' y manejo de SSID para Lollipop y Kitkat.
wifi.findAndConnect(ssid, password, (found) => {
if (found) {
console.log("wifi is in range");
} else {
console.log("wifi is not in range");
}
});
Desconectarse de la red wifi actual
wifi.disconnect();
Obtener SSID actual
wifi.getSSID((ssid) => {
console.log(ssid);
});
Obtener BSSID actual
wifi.getBSSID((bssid) => {
console.log(bssid);
});
Obtenga todas las redes wifi a su alcance
/*
wifiStringList is a stringified JSONArray with the following fields for each scanned wifi
{
"SSID": "El nombre de la red",
"BSSID": "La dirección del punto de acceso",
"capabilities": "Describe los esquemas de autenticación, administración de claves y cifrado admitidos por el punto de acceso",
"frequency": "La frecuencia primaria de 20 MHz (en MHz) del canal por el que el cliente se está comunicando con el punto de acceso ",
"level":" El nivel de señal detectado en dBm, también conocido como RSSI. (Recuerde que es un valor negativo) ",
"timestamp": "Marca de tiempo en microsegundos (desde el inicio) cuando se vio este resultado por última vez"
}
*/
wifi.loadWifiList((wifiStringList) => {
var wifiArray = JSON.parse(wifiStringList);
console.log(wifiArray);
},
(error) => {
console.log(error);
}
);
connectionStatus devuelve verdadero o falso dependiendo de si el dispositivo está conectado a wifi
wifi.connectionStatus((isConnected) => {
if (isConnected) {
console.log("is connected");
} else {
console.log("is not connected");
}
});
Conecta la intensidad de la señal wifi
wifi.getCurrentSignalStrength((level) => {
console.log(level);
});
Conecta la frecuencia wifi
wifi.getFrequency((frequency) => {
console.log(frequency);
})
Obtener IP actual
wifi.getIP((ip) => {
console.log(ip);
});
Obtener la dirección del servidor DHCP
wifi.getDhcpServerAddress((ip) => {
console.log(ip);
});
Eliminar / Olvidar la red Wifi del móvil por SSID, devuelve booleano Este método eliminará la red wifi según el SSID pasado de la lista de dispositivos.
wifi.isRemoveWifiNetwork(ssid, (isRemoved) => {
console.log("Forgetting the wifi device - " + ssid);
});
Inicia el escaneo de la red wifi nativa de Android y la lista de devoluciones Actualiza de forma dura el escaneo wifi de Android, implementado BroadcastReceiver
para garantizar que detecta automáticamente las nuevas conexiones wifi disponibles.
wifi.reScanAndLoadWifiList((wifiStringList) => {
var wifiArray = JSON.parse(wifiStringList);
console.log('Detected wifi networks - ',wifiArray);
},(error)=>{
console.log(error);
});
Método para forzar el uso de wifi. Android de forma predeterminada envía todas las solicitudes a través de datos móviles si el wifi conectado no tiene conexión a Internet.
wifi.forceWifiUsage(true);
Método para obtener el estado de conexión de una red forzada (porque lleva algún tiempo configurarla).
wifi.connectionStatusOfBoundNetwork((isBound) => {
if (isBound) {
console.log('Network is bound');
} else {
console.log('Network isn\'t bound');
}
});
Agregue una red wifi oculta y conéctese a ella.
wifi.connectToHiddenNetwork(ssid, password, (networkAdded) => {});