¿Cómo puedo reproducir automáticamente medios en iOS> = 4.2.1 Mobile Safari?

Parece que no puedo obtener medios de audio para jugar en Mobile Safari en iOS 4.2.1 en cualquier situación que no sea el controlador de un evento de clic realizado por el usuario. Incluso entonces, si player.play() se llama de manera asincrónica ( ajax, setTimeout , etc.) no funciona.

Intenté llamar a player.load() antes de player.play() . Intenté activar un evento de clic en un elemento dom cuyo controlador llama a player.play() . Intenté usar tags de audio y video.

Todas las lagunas que funcionaban antes de iOS 4.2.1 parecen estar cerradas. ¿Algunas ideas?

A partir de iOS 4.2.x, la descarga de medios no se iniciará si no hay un evento de entrada de usuario, como el inicio táctil.

Entonces, la respuesta es no , no hay un método para reproducir automáticamente los medios mediante JavaScript u otra cosa.

Hay una forma de reproducir el archivo de video / audio automáticamente en 4.2.1. Cree un iframe y establezca su fuente en la URL del archivo multimedia y anexe el iframe al cuerpo. Será un juego automático.

 var ifr=document.createElement("iframe"); ifr.setAttribute('src', "http://mysite.com/myvideo.mp4"); ifr.setAttribute('width', '1px'); ifr.setAttribute('height', '1px'); ifr.setAttribute('scrolling', 'no'); ifr.style.border="0px"; document.body.appendChild(ifr); 

Como otros han dicho aquí y de acuerdo con la documentación de Apple, MobileSafari NO admite el atributo de reproducción automática en la etiqueta de video. Sin embargo, en iOS 6 FUNCIONA. Esto parece ser un error que Apple solucionó en iOS 6.0.1 (y presumiblemente en iOS 6.1).

No confíe en la reproducción automática trabajando en iOS 6 si se tropezó con el trabajo en iOS 6.0.

-Miguel

Como solución alternativa, intenté vincular el código load () / play () a un evento click y luego activar el evento click programmatically. Este enfoque funcionó en Desktop Safari, pero no en Mobile Safari.

Esto funcionó en el iPad hasta la actualización de las últimas noches 4.2:

 $(function() { var Beep = document.createElement('audio'); Beep.setAttribute('src', 'beep-23.mp3'); Beep.load(); Beep.play(); } 

My Beep.play(); todavía funciona para un evento de clic, pero el Beep.play() inicial dejó de funcionar …

¿Qué tal esto?

Cree un sprite de audio con Sound Manager 2, precargue y almacene en caché desde la primera interacción del usuario, y luego juegue cuando sea necesario.

Funcionaría eso?

Reproducción automática es compatible (en mis pruebas) con un iPhone 5 (iOS 6) con la toma de auriculares.

En mi iPad de tercera generación con IOS 6, la reproducción automática de tags HTML5 ¡ha comenzado a funcionar de repente! (He tenido iOS 6 instalado por un par de semanas, y estoy bastante seguro de que probé esta función de inmediato, pero solo me di cuenta de que funcionaba esta noche.) No recuerdo haber visto nada de esto por parte de Apple, aunque vi que Safari móvil tenía la capacidad de admitir cargas de archivos a través de

 

– Otra característica que necesitaba pero que Apple había retenido.

Por favor, pruebe este código, está funcionando en ambas versiones, necesita agregar el control de audio dinámicamente en la página. está funcionando.

 var isiPad = false; if (navigator.userAgent.match(/iPad/i) || navigator.userAgent.match(/iPhone/i) || navigator.userAgent.match(/Android/i) || navigator.userAgent.match(/webOS/i)) { isiPad = true; } $(function() { if (isiPad) { var audioElement2 = document.createElement('audio'); audioElement2.setAttribute('src', 'img/bgsound.mp3'); audioElement2.controls = true; audioElement2.loop = true; audioElement2.load(); audioElement2.play(); } });