andreafrancioni opened a new issue, #628: URL: https://github.com/apache/cordova-plugin-file/issues/628
Versions: • iOS Version: 17.5.1 • Cordova Version: 12.0.0 (cordova-lib@12.0.1) • Cordova Plugin File Version: 8.1.0 Description: I am experiencing an issue with downloading and accessing media files on iOS 17.5.1 using Cordova. The code works perfectly on Android devices, but on iOS, the files are downloaded but cannot be accessed or played. Steps to Reproduce: 1. Prompt the user to download media files. 2. Download the files and save them in the cache directory using cordova.file.dataDirectory. 3. Attempt to access and play the downloaded files. Current Behavior: On iOS, the files are downloaded successfully, but when attempting to access or play these files, the app fails to locate the files, and they appear to be missing or inaccessible. Expected Behavior: The downloaded files should be accessible and playable from the cache directory, similar to the behavior observed on Android devices. Relevant Code: setDialog( "E' necessario scaricare i contenuti audio/video, vuoi continuare?", "yes-no", (answer) => { if (answer === "yes") { this.downloadMediaFiles(); } } ); getCacheDirectoryPath() { // Ottieni il percorso della directory di cache window.resolveLocalFileSystemURL(cordova.file.dataDirectory, (dirEntry) => { this.cacheDirectory = dirEntry.toURL(); console.log("Cache directory: " + this.cacheDirectory); }, (error) => { console.error("Errore nel risolvere il file system: " + error.toString()); }); } async downloadMediaFiles() { this.downloadProgress = 0; this.downloadMessage = `Scaricamento di 0/${this.mediaFiles.length} file`; for (let i = 0; i < this.mediaFiles.length; i++) { await this.downloadFile(this.server_base_path + this.mediaFiles[i]); this.downloadProgress = ((i + 1) / this.mediaFiles.length) * 100; this.downloadMessage = `Scaricamento di ${i + 1}/${this.mediaFiles.length} file`; } this.downloadMessage = "Download completato!"; localStorage.setItem('downloadedMediaFiles', JSON.stringify(this.mediaFiles)); setTimeout(() => { this.showDownloadDialog = false; }, 300); } async downloadFile(url) { console.log("Download URL:", url); try { const response = await fetch(url); if (!response.ok) { throw new Error('Network response was not ok'); } const blob = await response.blob(); const fileName = url.split('/').pop(); console.log("File name:", fileName); window.resolveLocalFileSystemURL(this.cacheDirectory, (dirEntry) => { dirEntry.getFile(fileName, { create: true, exclusive: false }, (fileEntry) => { fileEntry.createWriter((fileWriter) => { fileWriter.onwriteend = () => { console.log("Download completato: " + fileEntry.toURL()); }; fileWriter.onerror = (error) => { console.error("Errore nel download del file: " + error.toString()); }; console.log(blob); fileWriter.write(blob); }, (error) => { console.error("Errore nella creazione del file: " + error.toString()); }); }, (error) => { console.error("Errore nel recuperare il file: " + error.toString()); }); }, (error) => { console.error("Errore nel risolvere il file system: " + error.toString()); }); } catch (error) { console.error("Errore nel download del file: " + error.toString()); } } video source are build like this: `<video preload="auto" playinline="" autoplay="" controls="" controlslist="nofullscreen"><source src="file:///var/mobile/Containers/Data/Application/(APP_ID)/Documents/(FILENAME).mp4" type="video/mp4"></video>` Observations: • The issue appears to be specific to iOS. • The file download and access process works correctly on Android devices. • When attempting to download a file through Safari’s debugger, it can be accessed correctly if saved manually. Possible Causes: • Differences in file system access permissions between iOS and Android. • Possible bug in cordova-plugin-file or Cordova itself on iOS 17.5.1. Request for Help: Any insights or suggestions on how to resolve this issue would be greatly appreciated. Specifically, if there are known issues with cordova-plugin-file on iOS 17.5.1 or if additional configurations are required, please let me know. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@cordova.apache.org.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@cordova.apache.org For additional commands, e-mail: issues-h...@cordova.apache.org