Actualmente estamos desarrollando un sitio web que permite a los usuarios reproducir etiquetas de audio simples conectadas al audiocontexto. Somos conscientes de problemas técnicos con IOS, como la reproducción iniciada por gestos del usuario. Todo funciona bien hasta IOS12. Ahora que IOS13 está fuera, ya nada funciona.
Funciona en todos los escritorios, Android e IOS hasta IOS13.
¿Alguna idea de lo que está pasando?
No hay mensajes de error en la consola al depurar con Safari en el escritorio conectado al iPhone.
https://codepen.io/gchad/pen/WNNvzzd
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">
<body>
<div>
<h1>Play Audio Tag connected to audio context</h1>
<div id="playbutton" style="width:100px; height:100px; background:blue; color:white; margin:auto; text-align: center; font-size: 30px; cursor: pointer;">
Play
</div>
<audio id="myPlayer" crossorigin="anonymous" >
<source src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/858/outfoxing.mp3"/>
<!--http://commondatastorage.googleapis.com/codeskulptor-assets/week7-brrring.m4a-->
</audio>
</div>
<script>
var player = document.getElementById('myPlayer'),
playbutton = document.getElementById('playbutton'),
playStatus = 'paused';
var audioContext = new(window.AudioContext || window.webkitAudioContext)();
var audioSource = audioContext.createMediaElementSource(player);
audioSource.connect(audioContext.destination);
playbutton.addEventListener('click',function(ev){
if( playStatus == 'paused'){
audioContext.resume();
player.play();
playbutton.innerHTML = "Pause";
playStatus = 'isPlaying';
} else {
player.pause();
playbutton.innerHTML = "Play";
playStatus = 'paused';
}
});
</script>
</body>
web-audio-api
ios13
JohnLoyd
fuente
fuente
audioContext.resume();
línea debería ocuparse de eso, pero creo que lo que sigue debe estar en la resolución de la promesa, así: audioContext.resume (). Luego (function () {player.play () playbutton.innerHTML = "Pause"; playStatus = 'isPlaying';}src
estática con una URL completa. Sin embargo, solo funciona si abandonas Safari y luego lo vuelves a abrir. Comportamiento muy extraño.Respuestas:
Desafortunadamente,
AudioContext.createMediaElementSource
se ha roto desde el lanzamiento de iOS 13. Se informó que el error se solucionó en Safari Technology Preview 99 : https://bugs.webkit.org/show_bug.cgi?id=203435 , pero todavía está roto en el reciente lanzamiento de iOS, por lo que se presentó un nuevo informe de errores que se puede encontrar aquí: https://bugs.webkit.org/show_bug.cgi?id=211394fuente
Este problema se informó erróneamente como solucionado en iOS 13.3.1 (28 de enero de 2020). Sin embargo, como cualquiera puede leer en este informe de error de WebKit 203435 , el problema sigue existiendo a partir del 7 de abril de 2020, la fecha de lanzamiento de iOS 13.4.1.
El informe de error no proporciona más información con respecto a la fecha estimada en que se solucionará este error. Lamentablemente, el 80% de los usuarios de iOS (aproximadamente el 14% del mercado móvil total, según Statcounter) han estado incapacitados por error de usar WebAudio en sus dispositivos durante meses.
Lo que empeora las cosas para nosotros los desarrolladores es que Safari no informa ningún error. Por lo tanto, incluso tratar de imaginar un retroceso no es posible o muy difícil de todos modos.
fuente