web-dev-qa-db-fra.com

Les balises <audio> cassées par IOS13 ont-elles été utilisées comme tampons audio connectés au contexte audio?

Nous développons actuellement un site Web qui permet aux utilisateurs de lire de simples balises audio connectées à l'audiocontext. Nous sommes conscients des problèmes techniques avec IOS tels que la lecture initiée par les gestes de l'utilisateur. Tout fonctionne bien jusqu'à IOS12. Maintenant que IOS13 est sorti, plus rien ne fonctionne.

Il fonctionne sur tous les ordinateurs de bureau, Android et IOS jusqu'à IOS13.

Une idée de ce qui se passe?

Il n'y a aucun message d'erreur dans la console lors du débogage avec Safari sur le bureau connecté à l'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>

8
JohnLoyd

Malheureusement, AudioContext.createMediaElementSource a été interrompu depuis la sortie d'iOS 13. Le bug a été corrigé: https://bugs.webkit.org/show_bug.cgi?id=203435 . C'est dans Safari Technology Preview 99 .

2
Jordy van Dortmont

Ce problème a été signalé par erreur comme corrigé dans iOS 13.3.1 (28 janvier 2020). Néanmoins, comme tout le monde peut le lire Rapport de bogue WebKit 203435 , le problème est toujours là au 7 avril 2020, date de sortie d'iOS 13.4.1.

Le rapport de bogue ne fournit aucune autre information concernant la date estimée à laquelle ce bogue va être corrigé. Malheureusement, 80% des utilisateurs d'iOS (environ 14% du marché mobile total, selon Statcounter) ont été par erreur incapables d'utiliser WebAudio sur leurs appareils depuis des mois.

Ce qui aggrave les choses pour nous, les développeurs, c'est que Safari ne signale aucune erreur. Ainsi, même essayer d'imaginer un repli n'est pas possible ou très difficile de toute façon.

0
Luigi Pulcini