expo-network — это библиотека для React Native, которая предоставляет API для получения информации о состоянии сети устройства. Она позволяет проверять подключение к интернету, тип сети (Wi-Fi, мобильная сеть и т.д.) и другую информацию о сети.
Основные возможности expo-network
- Проверка текущего состояния сети (подключено/не подключено).
- Получение типа сети (Wi-Fi, мобильная сеть, Ethernet и т.д.).
- Поддержка асинхронных операций.
- Легкая интеграция с Expo и React Native проектами.
Установка
expo install expo-network
Основное использование
Для использования библиотеки expo-network, необходимо импортировать её и использовать предоставленные методы для получения информации о сети.
import React, { useEffect, useState } from 'react';
import { View, Text, StyleSheet } from 'react-native';
import * as Network from 'expo-network';
const NetworkStatus = () => {
const [networkInfo, setNetworkInfo] = useState(null);
useEffect(() => {
const fetchNetworkInfo = async () => {
const status = await Network.getNetworkStateAsync();
setNetworkInfo(status);
};
fetchNetworkInfo();
}, []);
return (
Network Information:
{networkInfo ? (
<>
Connected: {networkInfo.isConnected ? 'Yes' : 'No'}
Type: {networkInfo.type}
Is Internet Reachable: {networkInfo.isInternetReachable ? 'Yes' : 'No'}
>
) : (
Loading...
)}
);
};
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
padding: 16,
},
});
export default NetworkStatus;
Методы expo-network
getNetworkStateAsync
Метод getNetworkStateAsync
возвращает текущее состояние сети.
const networkState = await Network.getNetworkStateAsync();
console.log(networkState);
getIpAddressAsync
Метод getIpAddressAsync
возвращает IP-адрес устройства.
const ipAddress = await Network.getIpAddressAsync();
console.log(ipAddress);
getNetworkStateAsync
Метод getNetworkStateAsync
возвращает объект с информацией о состоянии сети:
{
isConnected: true, // Устройство подключено к сети
isInternetReachable: true, // Интернет доступен
type: 'WIFI', // Тип сети
isWifiEnabled: true, // Wi-Fi включен
details: { // Дополнительная информация о сети
isConnectionExpensive: false,
cellularGeneration: '4g',
ipAddress: '192.168.1.1'
}
}
Пример использования getIpAddressAsync
Вы можете использовать метод getIpAddressAsync
для получения IP-адреса устройства:
import React, { useEffect, useState } from 'react';
import { View, Text, StyleSheet } from 'react-native';
import * as Network from 'expo-network';
const IpAddress = () => {
const [ipAddress, setIpAddress] = useState(null);
useEffect(() => {
const fetchIpAddress = async () => {
const ip = await Network.getIpAddressAsync();
setIpAddress(ip);
};
fetchIpAddress();
}, []);
return (
IP Address:
{ipAddress ? (
{ipAddress}
) : (
Loading...
)}
);
};
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
padding: 16,
},
});
export default IpAddress;
Информация о подключении
Вы можете использовать библиотеку для получения подробной информации о текущем подключении устройства:
import React, { useEffect, useState } from 'react';
import { View, Text, StyleSheet } from 'react-native';
import * as Network from 'expo-network';
const ConnectionInfo = () => {
const [connectionInfo, setConnectionInfo] = useState(null);
useEffect(() => {
const fetchConnectionInfo = async () => {
const info = await Network.getNetworkStateAsync();
setConnectionInfo(info);
};
fetchConnectionInfo();
}, []);
return (
Connection Information:
{connectionInfo ? (
<>
Connected: {connectionInfo.isConnected ? 'Yes' : 'No'}
Type: {connectionInfo.type}
Is Internet Reachable: {connectionInfo.isInternetReachable ? 'Yes' : 'No'}
Is WiFi Enabled: {connectionInfo.isWifiEnabled ? 'Yes' : 'No'}
IP Address: {connectionInfo.details.ipAddress}
Cellular Generation: {connectionInfo.details.cellularGeneration}
Is Connection Expensive: {connectionInfo.details.isConnectionExpensive ? 'Yes' : 'No'}
>
) : (
Loading...
)}
);
};
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
padding: 16,
},
});
export default ConnectionInfo;
Заключение
expo-network — это полезная библиотека для получения информации о состоянии сети в приложениях на базе React Native. Она предоставляет простые и удобные методы для проверки подключения к интернету, получения IP-адреса устройства и другой информации о сети, что делает её незаменимым инструментом для разработчиков мобильных приложений.