Estoy creando una aplicación móvil, para la plataforma Android e IOS e intento conectar la parte posterior con la parte frontal, pero encuentro un error de tiempo de espera para la solicitud en IOS, cuando funciona para Android.
aquí mi código:
const Login = ({ navigation }) => { const [openToggle, setOpenToggle] = useState(false); const [user, setUser] = useState([]); let baseURL = null; Platform.OS === "android" ? (baseURL = "http://10.0.2.2:8000") : (baseURL = "http://10.0.2.2:8000"); useEffect(() => { const getAllUser = async () => { try { const users = await axios.get(`${baseURL}/api/user`); console.log("test"); console.log(users.data); setUser(users.data); } catch (error) { console.log("erreur", error); } }; getAllUser(); }, []);Estoy en un simulador para Android y en un Iphone real para IOS.
erreur [Error: timeout exceeded]Estoy en la misma red wifi para el simulador y el iphone.
¿Algún consejo?
En el emulador de Android 10.0.2.2 corresponde a la máquina local. Más información aquí Es por eso que funciona en Android.
En iOS, el simulador de iOS comparte Internet de la máquina local, por lo que localhost o 127.0.0.1 apuntarán a su máquina local.
Entonces, debe usar localhost o 127.0.0.1 en iOS.
Si está ejecutando su aplicación en su dispositivo iPhone / Android, debe conectar su teléfono con la misma red wifi y usar la dirección IP de su máquina
Compruebe esto https://reactnative.dev/docs/running-on-device
O puede obtener la IP de la máquina desde donde se carga el empaquetador desde el siguiente código
import { NativeModules } from 'react-native'; const { scriptURL } = NativeModules.SourceCode; const scriptHostname = scriptURL.split('://')[1].split(':')[0];