Cordova vidéo / audio de ne pas jouer de cdvfile:// url après mise à jour de 3.3.0
Mon Cordova téléchargements de l'application des fichiers audio à partir d'un serveur et les rend disponibles pour jouer lorsque l'appareil est en mode hors connexion. C'était tout fonctionne bien jusqu'à hier, quand j'ai mis à niveau vers la dernière version.
Au départ, ni le téléchargement (via le transfert de fichiers de plugin), ni le jeu (via les médias plugin) serait de travailler. En regardant plus loin, j'ai trouvé que fileSystem.root.fullPath
retourne maintenant un chemin relatif pour les applications web local dossier racine, mais elle a utilisé pour retourner le chemin d'accès complet. Cordova maintenant recommande l'utilisation de fileSystem.root.toURL()
à la place (http://cordova.apache.org/news/2014/02/10/plugins-release.html). Cela n'a en effet résoudre le problème de transfert de fichier.
Cependant, en utilisant le nouveau schéma d'URL ne fonctionne pas pour les fichiers audio. Lorsque vous tentez de lire le fichier, je reçois un message d'erreur indiquant que "Cannot use audio file from resource 'cdvfile://localhost/persistent/path/to/file'"
.
Vérification de l'Cordova issue tracker, j'ai trouvé que quelqu'un a signalé le même problème pour les fichiers vidéo (https://issues.apache.org/jira/browse/CB-6051).
Il semblerait que Cordova n'ai pas mis à jour le CDVSound plugin pour gérer le nouveau format de nom de fichier, mais il peut toujours fonctionner si je pouvais obtenir l'accès au chemin d'accès complet comme avant. J'ai regardé le nouveau code et de docs mais n'ont pas trouvé le moyen de le faire.
Quelqu'un a réussi à obtenir le chemin d'accès complet du fichier de plugin?
OriginalL'auteur TreeAndLeaf | 2014-02-18
Vous devez vous connecter pour publier un commentaire.
Je l'ai eu à travailler pour la vidéo à l'aide de la dev branches de fichier et de transfert de fichier. Ils ont ajouté une fonction de la classe d'Entrée appelé toNativeURL, Vous devez télécharger le zip des fichiers à partir de l'github projets:
https://github.com/apache/cordova-plugin-file-transfer/tree/dev
https://github.com/apache/cordova-plugin-file/tree/dev
https://github.com/apache/cordova-plugin-media/tree/dev
Puis de les installer dans votre projet:
C'est un exemple que j'ai obtenu de travail:
Si elle travaille avec la vidéo, il devrait certainement travailler avec l'audio.
C'est rapide 🙂 j'avais juste fusionné ce code lorsque vous avez écrit ceci. .toNativeURL est probablement la meilleure solution pour <video>. Il ne devrait pas être nécessaire pour les Médias plugin; qui doivent maintenant reconnaître la nouvelle Url en mode natif.
À compter d'aujourd'hui (2014-03-04), les versions de développement que vous mentionnez ont été libérés. Transfert de fichier 0.4.2, Fichier de la version 1.0.1 et des Médias 0.2.9 contiennent ces correctifs.
OriginalL'auteur dvdcastro
La branche de développement de l' [Media][1] et le Fichier plugins maintenant de résoudre ce problème. Si vous pouvez installer ces plugins à partir de git, puis de jouer à partir de
cdvfile://
Url devrait fonctionner.Je vais publier ici lorsque ce code est libéré, en tant que bien.
Mise à jour -- Comme de 2014-03-04, les correctifs pour les Médias et les Fichiers ont été publiés. Fichier de la version 1.0.1 et des Médias 0.2.9 travailler ensemble à la lecture de l'audio à partir de cdvfile Url.
OriginalL'auteur Ian Clelland
Je n'ai toujours pas de réponse pour l'obtention d'un chemin d'accès complet, mais j'ai décidé de hack iOS plugin jusqu'à ce qu'il y a une bonne correction de Cordoue. (Au moins je peux continuer avec dev pour le moment).
Le code suivant a été prise à partir de la
file-transfer
plugin, et peut être ajouté à CDVSound.m pour permettre le media plugin pour lire les fichiers audio avec le nouveaucdvfile://
chemins, iOS uniquement. Être averti si, je n'ai jamais écrit une ligne de ObjC avant et le code n'a pas été testé. C'est un correctif temporaire jusqu'à Cordoue patchs le plugin actuel.Aussi, si vous allez utiliser quelque chose comme cela, alors je garde le
[fs filesystemPathForURL:fsURL]
appel avec un chèque deif ([fs respondsToSelector:@selector(filesystemPathForURL:)])
, puisque c'est une méthode optionnelle du système de fichiers de protocole. Pas tous les fichiers des urls à des emplacements physiques sur le disque.OriginalL'auteur TreeAndLeaf