Recentemente ho aggiornato il nostro progetto iOS da Cordova 3.3 a 3.5.riproduzione audio mp3 non funzionante con Cordova 3.5 su iOS
I file mp3 (precedentemente scaricati nella cartella documenti standard iOS) non vengono riprodotti utilizzando l'API/plug-in multimediale. Questo codice ha funzionato in modo affidabile su iOS per molte versioni e incluso Cordova 3.3 ... I file mp3 sono stati scaricati in una sottodirectory chiamata "Download" nella cartella "documenti" dell'applicazione iOS standard.
Nella console XCode Viene visualizzato il seguente errore:
Risorsa sconosciuta 'file: //localhost/Users/weeasle/Library/Application%20Support/iPhone%20Simulator/6.1/Applications/ {App-ID} /Documents/Downloads/testsound.mp3 '
Nel mio codice (dopo alcuni blocchi di codice per l'API del plugin di file) ottengo la directory utilizzando: downloadDirFullPath = window.appRootDir.toURL();
Per conformarsi alle nuove modifiche nell'API file 3.5, l'ho modificato di recente da downloadDirFullPath = window.appRootDir.fullPath;
L'API Media Plugin per Cordova 3.5 è interrotta per la riproduzione audio dalla directory Documenti app iOS ???
O sono semplicemente stanco e mi manca qualcosa di ovvio ... Qualsiasi suggerimento o informazione è molto apprezzato.
Chris alias weeasle
AGGIORNAMENTO IL 20/Giu/14: Fix Trovato. Ora posso scaricare le mie mp3 .mp3 per giocare su iOS Cordova 3.5 ... Apparentemente con il nuovo filesystem Cordova 3.5 il metodo entry.fullPath non funziona più e viene sostituito da entry.toURL() come da https://github.com/apache/cordova-plugin-file/blob/master/doc/index.md
Questo funziona bene quando si chiamano le immagini con Cordova, Tuttavia c'è stata una stranezza con il Media Plugin su iOS per un po 'di tempo: per la riproduzione del suono, non accetta URL che iniziano con file: /// prende solo percorsi assoluti come/var/mobile/Applicazioni/{GUID}/Documenti/
La risposta e la correzione consiste nell'utilizzare il nuovo metodo toInternalURL() chiamato all'interno della voce restituita da fileSystem.root.getDirectory. La chiamata esatta che uso è downloadDirFullPath = window.appRootDir.toInternalURL(); (chiamato dalla voce passata da fileSystem.root.getDirectory).
Ciò restituisce: cdvfile: // localhost/persistent/Download/che quando pre-pended a .mp3 o altri file audio viene riprodotto con successo in iOS ..
Questo funziona anche per la visualizzazione delle immagini e dei media per cui è un'unica soluzione affidabile per Cordova iOS 3.5 e successive ..
Questa è di gran lunga la soluzione preferita poiché è più sicura dell'utilizzo di percorsi relativi (come se in futuro Apple apportasse modifiche significative alla struttura del file con una versione iOS, l'accesso ai file potrebbe pausa) ...
Un'altra nota: oltre alle chiamate/metodi sopra, downloadDi rName = window.appRootDir.nome; imposta anche cdvfile: percorso // localhost/persistent/base
Weeasle
Forse si è tentato qualche percorso relativ come: –
Watsche
Grazie Watsche per la tua risposta immediata. Stavo solo modificando la domanda e ho visto il tuo post ... Sfortunatamente sono un debuttante completo con ObjC e uso l'API Cordova/Phonegap ... Come menzionato nella risposta modificata, ho provato l'indirizzamento relativo - alcune versioni precedenti di Cordova menzionano indirizzi relativi ... Ma nessuna gioia ... – chris
Grazie. Molte piccole cose cambiano (a volte solo per il gusto di farlo) e non sono mai documentate. Questa è la cosa che odio di più di Cordova/PhoneGap – Mirko