¿Por qué mi aplicación IOS rechaza los files cdvfile: // y file: ///?

Tengo un problema visualizando imágenes descargadas en cordova.file.dataDirectory en mi aplicación angular / ionic / cordova.

Estoy usando cordova-plugin-file y puedo download los files y extraer las URL usando .toInternalURL () y / o .toURL (). Sin embargo, la vista de list angular los está rechazando. Estoy usando WkWebView para iOS, y mi código funciona bien en Android (usando .toInternalURL ()). He incluido en la list blanca tanto cdvfile: // * y file: /// * en la configuration como en meta content-security-policy …

He agregado capturas de pantalla Aquí está la captura de pantalla de la console para los enlaces generados por .toInternalURL ()

Aquí está la captura de pantalla de los enlaces generados por .toURL ():

Aquí está la política de security que estoy usando:

<meta http-equiv="Content-Security-Policy" content="default-src * data: cdvfile://* content://* file:///*; style-src 'self' 'unsafe-inline' *; script-src 'self' 'unsafe-inline' 'unsafe-eval' *; media-src *"> 

Ok, entonces resulta que mi problema fue WKWEBVIEW. Lo había estado usando y no me había dado count de que era la fuente de mi problema.

Entonces, para usar una ruta de image almacenada en el atributo src, no utilice cdvfile: // o file: ///. En su lugar, cree una ruta que se vea así:

http: // localhost: 12344 / Library / NoCloud / ho_tylw7Ygc.jpg

Prepare " http: // localhost: 12344 / Library / NoCloud " a entry.fullPath y está configurado para que apunte a dataDirectory de su aplicación.

Para que funcione, tuve que hacer el siguiente truco:

  1. Agregué el sufijo 'local-filesystem' en url http: // localhost: potr / local-filesystem /
  2. Luego agregué la ruta completa que tenía después del file: // por ejemplo, http: // localhost /: port / local-fileystem // Users / …
  3. Pero para que las cosas funcionen, si miras el document.location.href, verás el parámetro cdvToken. Debe agregarse a la url que grabaste como? CdvToken = blah-blah-blah

Solo después comenzó a funcionar. Tenga en count que uso 'local-webserver' npm pacakge como cordova-labs-local-webserver (versión 1.0.0-dev.) Las cosas pueden ser diferentes en otras versiones.