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 des gestes 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 sur 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>
web-audio-api
ios13
JohnLoyd
la source
la source
audioContext.resume();
ligne devrait s'occuper de cela, mais je pense que ce qui suit devrait être dans la résolution de la promesse, comme ceci: audioContext.resume (). Then (function () {player.play () playbutton.innerHTML = "Pause"; playStatus = 'isPlaying';}src
statique avec une URL complète. Cependant, cela ne fonctionne que si vous quittez Safari, puis l'ouvrez à nouveau. Comportement très étrange.Réponses:
Malheureusement, il
AudioContext.createMediaElementSource
a été rompu depuis la sortie d'iOS 13. Le bug aurait été corrigé dans Safari Technology Preview 99 : https://bugs.webkit.org/show_bug.cgi?id=203435 , mais il est toujours cassé dans la récente la sortie d'iOS, donc un nouveau rapport de bogue a été déposé qui peut être trouvé ici: https://bugs.webkit.org/show_bug.cgi?id=211394la source
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 à partir de ce rapport de bogue WebKit 203435 , le problème persiste 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.
la source