У меня есть приложение Expo, в котором я пытаюсь отправлять HTTP-запросы на сервер flask работающий в моей локальной сети. При отправке HTTP-запросов я использую IP-адрес своего компьютера (например, 192.168.29.1), а не localhost. При тестировании приложения с помощью сервера разработки Expo всё работает нормально. Однако, когда я собираю приложение в APK и устанавливаю его на мобильное устройство, оно не может подключиться к серверу. Вот код:
const handleSendData = async () => {
if (!photo || !selectedCategory || !photoHeading || !photoLocation) {
alert('Пожалуйста, убедитесь, что все данные доступны перед отправкой.');
return;
}
try {
// Чтение фотографии в формате base64
const base64Response = await fetch(photo);
const blob = await base64Response.blob();
const reader = new FileReader();
reader.readAsDataURL(blob);
reader.onloadend = async () => {
const base64data = reader.result;
// Подготовка данных для отправки
const data = {
category: selectedCategory,
heading: photoHeading,
latitude: photoLocation.latitude,
longitude: photoLocation.longitude,
photo: base64data,
};
// Отправка данных на сервер
const response = await fetch(`http://${serverIp}/detect`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(data),
});
if (response.ok) {
const result = await response.json();
alert('Данные успешно отправлены!');
console.log('Server response:', result);
} else {
alert('Ошибка при отправке данных.');
console.error('Server error:', response.status);
}
};
} catch (error) {
console.error('Ошибка при отправке данных:', error);
alert('Произошла ошибка при отправке данных.');
}
};
const handleChangeIp = () => {
setIsIpModalVisible(true);
};
Компьютер и телефон при этом находятся в одной сети (точка доступа телефона). Ip компьютера правильный
Вот код app.json, если вдруг в нем может быть проблема..
{
"expo": {
"name": "radar-app",
"slug": "radar-app",
"version": "1.0.0",
"orientation": "portrait",
"icon": "./assets/icon.png",
"userInterfaceStyle": "light",
"newArchEnabled": true,
"splash": {
"image": "./assets/splash-icon.png",
"resizeMode": "contain",
"backgroundColor": "#ffffff"
},
"ios": {
"supportsTablet": true
},
"android": {
"adaptiveIcon": {
"foregroundImage": "./assets/adaptive-icon.png",
"backgroundColor": "#ffffff"
},
"package": "com.matrik_by.radarapp",
"permissions": [
"INTERNET",
"ACCESS_FINE_LOCATION",
"CAMERA",
"READ_EXTERNAL_STORAGE",
"WRITE_EXTERNAL_STORAGE"
],
"usesCleartextTraffic": true
},
"web": {
"favicon": "./assets/favicon.png"
},
"extra": {
"eas": {
"projectId": "fcf2c3f0-a450-4002-b7b2-b710aa5c10ce"
}
}
}
}