92 votes

Lecture automatique des fichiers audio sur un iPad avec HTML5

J’essaie d’obtenir un fichier audio en lecture automatique dans Safari sur un iPad. Si je vais à la page à l’aide de Safari sur mon Mac, il est très bien. Sur l’iPad, lecture automatique ne fonctionne pas.

110voto

Rick M Points 669

Je tiens aussi à souligner que la raison pour laquelle vous ne pouvez pas le faire c'est une décision d'affaires que Apple a fait, pas une décision technique. À savoir, il n'y avait pas rationnel justification technique pour Apple pour désactiver le son de web apps sur l'iPod Touch. C'est un appareil WiFi uniquement, pas un téléphone qui peut engager de coûteux frais de bande passante, pour que l'argument n'a aucun mérite pour ce périphérique. Ils peuvent dire qu'ils aident avec le réseau WiFi de gestion, mais des problèmes avec la bande passante sur mon réseau WiFi est mon problème, pas d'Apple.

Aussi, si ce qu'ils se souciaient vraiment de a été contre les, excessive consommation de bande passante, ils fournissent un cadre pour permettre aux utilisateurs d'opt-in pour les applications web de sons. Aussi, ils devaient faire quelque chose pour restreindre les sites web de la consommation de l'équivalent de la bande passante par d'autres moyens. Mais il n'y a pas de telles restrictions. Un site web peut télécharger de gros fichiers en arrière-plan sur et sur et Apple ne s'intéressent pas à ce sujet. Et enfin, je crois que les sons peuvent être téléchargés de toute façon, donc PAS de bande PASSANTE EST en FAIT ENREGISTRÉ! Apple vient de ne pas leur permettre de jouer automatiquement sans interaction de l'utilisateur, les rendant inutilisables pour les jeux, ce qui est leur véritable intention.

Apple a bloqué son, parce qu'ils ont commencé à remarquer que les applications HTML5 peuvent être tout aussi capables que les applications natives, si ce n'est plus. Si vous voulez du son dans les Applications Web, vous devez hall d'Apple d'arrêter d'être anti-concurrentiel comme Microsoft. Il n'y a pas de problème technique qui peut être fixe ici.

35voto

Fa11enAngel Points 2754

C'est un hack et il ne marche plus sur IOS 4.X et au-dessus. Ce un travaillé sur IOS 3.2.X.

Ce n'est pas vrai. Apple ne veut pas de lecture automatique de la vidéo et l'audio sur IPad en raison de la forte quantité de trafic que vous pouvez utiliser sur les réseaux mobiles. Je ne voudrais pas utiliser l'exécution automatique pour le contenu en ligne. Hors ligne d'un site HTML c'est une grande fonctionnalité et c'est ce que je l'ai utilisé pour.

Voici un "javascript faux cliquez sur" solution: http://www.roblaplaca.com/examples/html5AutoPlay/

Copier-Collé de Code à partir du site:

<script type="text/javascript"> 
        function fakeClick(fn) {
            var $a = $('<a href="#" id="fakeClick"></a>');
                $a.bind("click", function(e) {
                    e.preventDefault();
                    fn();
                });

            $("body").append($a);

            var evt, 
                el = $("#fakeClick").get(0);

            if (document.createEvent) {
                evt = document.createEvent("MouseEvents");
                if (evt.initMouseEvent) {
                    evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
                    el.dispatchEvent(evt);
                }
            }

            $(el).remove();
        }

        $(function() {
            var video = $("#someVideo").get(0);

            fakeClick(function() {
                video.play();
            });
        });

        </script> 

Ce n'est pas ma source. J'ai trouvé ça il y a quelques temps et testé le code sur un IPad et un IPhone avec IOS 3.2.X.

32voto

kaleazy Points 1129

Apple fâcheusement rejette beaucoup de HTML5 standards du web sur leurs appareils iOS, pour une variété de raisons. En fin de compte, vous ne pouvez pas pré-charge ou de l'auto-lire des fichiers audio avant un événement de touche, il ne joue qu'un seul son à la fois, et il ne prend pas en charge le format Ogg/Vorbis. Cependant, j'ai trouvé une chouette solution pour vous permettre d'avoir un peu plus de contrôle sur l'audio.

<audio id="soundHandle" style="display:none;"></audio>

<script type="text/javascript">

var soundHandle = document.getElementById('soundHandle');

$(document).ready(function() {
    addEventListener('touchstart', function (e) {
        soundHandle.src = 'audio.mp3';
        soundHandle.loop = true;
        soundHandle.play();
        soundHandle.pause();
    });
});

</script>

Fondamentalement, vous commencez à jouer le fichier audio sur le tout premier événement de touche, alors vous interrompez immédiatement. Maintenant, vous pouvez utiliser le soundHandle.play() et soundHandle.pause() commandes tout au long de votre Javascript et de contrôle de l'audio sans toucher les événements. Si vous pouvez de temps à la perfection, juste le mettre en pause viennent juste après le son est plus. Alors la prochaine fois que vous jouerez à nouveau, il va revenir au début. Cela ne va pas résoudre tous les mess Apple a fait ici, mais c'est une solution.

23voto

David Gouldin Points 350

Comme de l'iOS 4.2.1, ni le faux cliquez sur ni l' .load() astuce va travailler pour la lecture automatique de l'audio sur n'importe quel appareil iOS. La seule option que je connaisse est d'amener l'utilisateur à effectuer une action du clic et de commencer la lecture dans le gestionnaire d'événements click sans habillage .play() appel dans quoi que ce soit asynchrone (ajax, setTimeout, etc).

Quelqu'un s'il vous plaît dites-moi si je me trompe. J'ai eu de travail des échappatoires pour iPad et iPhone avant la plus récente mise à jour, et tous regardent comme ils ont été fermés.

7voto

Brian Brown Points 81

Essayez d’appeler la méthode .load() avant la méthode .play() sur le tag audio ou vidéo... qui sera HTMLAudioElement ou HTMLVideoElement respectivement. C’était la seule façon que cela fonctionnerait sur l’iPad pour moi !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X