Risorsa di caricamento di Cordova dal problema dei documenti (WKwebview)

Aug 21 2020

Abbiamo un'applicazione Cordova molto semplice che scarica tutto il contenuto dell'app nella cartella /Documents/. Qui memorizziamo html, immagini, css e javascript. Recentemente siamo passati a WKWebview perché quello vecchio è deprecato. L'HTML viene letto dai documenti e aggiunto al file di indice locale. Funziona tutto bene. Successivamente proviamo ad aggiungere il blocco di script impostando src su 'file://.../data/Containers/Application/Documents/test.js' (il file è lì). Sfortunatamente questo non è supportato, otteniamo il messaggio: Impossibile caricare la risorsa: l'operazione non può essere completata. Operazione non consentita Stiamo utilizzando l'ultima Cordova e l'ultima piattaforma IOS.

Qualcuno ha un'idea su come risolvere questo problema? Funziona tutto bene nel simulatore ma non sul dispositivo iPad.

Molte grazie in anticipo.

Pettirosso

Risposte

2 BrunoLaurinec Sep 10 2020 at 02:06

C'è anche una soluzione, che non richiede modifiche significative al codice che ho trovato dopo giorni senza speranza in cui nessuna soluzione sembrava disponibile

Sono necessari 2 passaggi:

Per prima cosa aggiorna il tuo config.xml con quanto segue

<platform name="ios">    
  <preference name="scheme" value="app" />
  <preference name="hostname" value="localhost" />
 </platform>

Quindi convertire il collegamento file:// utilizzando il metodo non documentato

window.WkWebView.convertFilePath(filePath)

Questo metodo esegue la conversione in un collegamento localhost virtuale che rende il file accessibile e ignora le restrizioni di WkWebView. Un campione un po' più lungo va così

let localFile = cordova.file.dataDirectory + 'logo.png';
let convertedPath = window.WkWebView.convertFilePath(localFile);
document.getElementById("myImg").src = convertedPath;
1 Jeethendra Aug 21 2020 at 18:20

Ah. Ho appena corretto il protocollo di file 'file://' e i collegamenti Web con target='_blank' 2 giorni fa nella mia applicazione. WKWebView ha problemi. Ma ci sono alcuni plugin che possono risolvere questo problema.

Prova a installare i plug-in cordova-plugin-wkwebview-file-xhr e cordova -plugin-wkwebviewxhrfix , che risolvono il problema con il protocollo file.