así que tengo una aplicación existente que ha estado en la tienda de aplicaciones desde hace bastante tiempo, a partir de 3 días que estaba recibiendo más consultas de soporte diciendo mi aplicación no se pudo conectar a mi servicio.
Ahora que finalmente ha sucedido a mí en mis dispositivos Android - todo funciona perfectamente para iOS y para Android perfectamente el emulador - pero nada en el mundo real.
He mirado por lo que puede por el paso de depuración con Cordova y pasa la multa prueba lista blanca. Mi primer petición XHR funciona bien, pero las subsiguientes siempre fallan hasta que cierre por completo la aplicación y volver a abrir.
Estoy utilizando [email protected]
- También he intentado[email protected]
Mis Content-Security-Policy
miradas como este
<meta http-equiv="Content-Security-Policy" content="default-src * 'self' gap:; img-src http://*.my-site.com.au https://*.my-site.com.au https://*.my-site.com http://*.my-site.com https://*.googleusercontent.com http://*.googleapis.com https://google.com https://*.google.com https://*.googleapis.com https://*.gstatic.com 'self' data:; style-src http://*.googleapis.com https://*.googleapis.com 'self' 'unsafe-inline'; script-src 'self' https://*.googleapis.com http://*.googleapis.com http://maps.google.com http://*.gstatic.com https://*.gstatic.com https://maps.google.com 'unsafe-inline' 'unsafe-eval'">
Mi config Córdova
<allow-navigation href="*" />
<allow-navigation href="http://*/*" />
<allow-navigation href="https://*/*" />
He intentado añadir / eliminar / reemplazar el anterior / cada combinación con <access origin="*" />
, pero sin suerte.
Mi respuesta XHR siempre se ve como la siguiente
xhr.responseUrl = "http://my-site.com/?d=12343902i49"
xhr.status = 0
xhr.responseText = ""
He depurado paso a la solicitud XHR por lo que podría tener en el Córdoba Plugin, a paso de depuración de la Whitelist.java
, pero todo vuelve fina y lo hace con éxito a la línea
// If we don't need to special-case the request, let the browser load it.
return null;
de la función
WebResourceResponse shouldInterceptRequest(WebView view, String url)
en org.apache.cordova.engine.SystemWebViewClient.java
Mi Manifiesto Android tiene la siguiente
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="28" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-feature android:name="android.hardware.location.gps" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.RECORD_VIDEO" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-feature android:name="android.hardware.camera" android:required="true" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />
Estoy usando [email protected], plataforma de Córdoba [email protected]
He pasado varias horas tratando de cavar más profundo, lo que me estoy perdiendo aquí? Cualquier ayuda sería muy apreciada!
A medida que el problema desaparece si se baja la targetSDK, es probable que la usesCleartextTraffic
mencionada por Nidhin Josehp. Sólo afecta a los dispositivos Android 8 o posterior cuando la orientación SDK de 28 o mayor.
En lugar de editar manualmente el AndroidManifest.xml
que se sugieren (nunca se debe editar manualmente en aplicaciones Cordova) se puede añadir esto a laconfig.xml
<platform name="android">
<edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application">
<application android:usesCleartextTraffic="true" />
</edit-config>
</platform>
Es posible que tenga que cambiar su etiqueta de widget en config.xml
a ser algo como esto:
<widget id="com.your.app.id" version="1.0.0"
xmlns="http://www.w3.org/ns/widgets"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:cdv="http://cordova.apache.org/ns/1.0">
(La adición es la xmlns:android="http://schemas.android.com/apk/res/android"
)