Risorsa di caricamento di Cordova dal problema dei documenti (WKwebview)
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
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;
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.