Atualmente, estamos desenvolvendo um site que permite que os usuários reproduzam tags de áudio simples conectadas ao contexto de áudio. Estamos cientes de problemas técnicos com o IOS, como a reprodução iniciada por gestos do usuário. Tudo está funcionando bem até o IOS12. Agora que o IOS13 saiu, nada funciona mais.
Ele funciona em todos os desktops, Android e IOS até o IOS13.
Alguma idéia do que está acontecendo?
Não há mensagens de erro no console ao depurar com o Safari on Desktop conectado ao 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
fonte
fonte
audioContext.resume();
linha deve cuidar disso, mas acho que o que se segue deve estar na promessa de resolver, assim: audioContext.resume (). Then (function () {player.play () playbutton.innerHTML = "Pause"; playStatus = 'isPlaying';}src
estática com um URL completo. No entanto, ele só funciona se você sair do Safari e depois abri-lo novamente. Comportamento muito estranho.Respostas:
Infelizmente,
AudioContext.createMediaElementSource
está quebrado desde o lançamento do iOS 13. O bug foi corrigido: https://bugs.webkit.org/show_bug.cgi?id=203435 . Está no Safari Technology Preview 99 .fonte
Este problema foi relatado por engano como corrigido no iOS 13.3.1 (28 de janeiro de 2020). No entanto, como qualquer pessoa pode ler neste relatório de bug do WebKit 203435 , o problema ainda está presente em 7 de abril de 2020, data de lançamento do iOS 13.4.1.
O relatório de bug não fornece mais informações sobre a data estimada em que esse bug será corrigido. Infelizmente, 80% dos usuários de iOS (cerca de 14% do mercado total de dispositivos móveis, de acordo com a Statcounter) estão equivocadamente incapazes de usar o WebAudio em seus dispositivos há meses, agora.
O que piora as coisas para nós desenvolvedores é que o Safari não relata nenhum erro. Portanto, mesmo tentando imaginar um fallback não é possível ou muito difícil.
fonte