Todas las solicitudes de API al servidor localhost devuelven el archivo index.html de la aplicación React.js en la compilación de iOS, pero las solicitudes funcionan bien en las compilaciones de navegador y PWA.
Las solicitudes devuelven los datos previstos (generalmente JSON).
Por lo general, las solicitudes de API van a http://localhost:3000/api/[ruta]. En la compilación de iOS, van a capacitor://localhost/api/[ruta]
Debido a que la ruta devuelve datos HTML y no JSON, recibo el siguiente error (uno de muchos, ya que cada ruta API tiene el mismo error) que genera una pantalla en blanco:
TypeError: undefined is not a function (near '...a.map...')Intenté agregar un nombre de host (ubicación donde se aloja el servidor de producción) al archivo capacitor.config.json en mi directorio raíz, pero aún falla. El servidor API de desarrollo se ejecuta en localhost:3000.
También intenté configurar el nombre de host del servidor en "localhost: 3000" en la configuración.
"server": { "hostname": "localhost:3000" },"http" no está permitido como iosScheme como se menciona en los documentos para la configuración del condensador: no se puede configurar en esquemas que WKWebView ya maneja, como http o https] ( https://developer.apple.com/documentation /webkit/wkwebviewconfiguration/2875766-seturlschemehandler )
Debido a que el sitio funciona en cualquier otra compilación que no sea esta compilación de iOS, el problema debería estar aquí...
¿Cómo puedo enrutar mis solicitudes en la compilación de iOS para dirigirlas a la ubicación correcta?
Si configuro la opción server.url en el archivo capacitor.config.json en https://www.website.com , puedo extraer datos de mi servidor de producción, pero cuando la verificación de autorización devuelve un 401, la aplicación parece colgarse en la pantalla de inicio y el único mensaje de error que recibo en la consola es que la respuesta devolvió un 401 (como se esperaba)
El primer problema se solucionó configurando el parámetro server.url en el archivo capacitor.config.json en la URL del servidor de producción:
"server":{ "url":"https://www.website.com" }El segundo problema fue asegurarse de que el código oculto de la pantalla de bienvenida de @capacitor/splash-screen se implementara realmente en prod en el archivo index.js.
import { SplashScreen } from '@capacitor/splash-screen'; setTimeout(() => { SplashScreen.hide(); }, 2000);Por la poca información que me has proporcionado intentaré adivinar qué es lo que falla.
/api/[route] , el navegador agregará el esquema y el nombre de host y lo convertirá en capacitor://localhost:3000/api/[route] . Esa URL pertenece a la aplicación, no al servidor web donde se ejecuta su API.Parece que estás en el punto 1, una vez que lo arregles, llegarás al punto 2 y luego probablemente al punto 3 después de eso.