Obecnie tworzymy stronę internetową, która pozwala użytkownikom odtwarzać proste tagi audio podłączone do audiokontekstu. Zdajemy sobie sprawę z problemów technicznych związanych z IOS, takich jak odtwarzanie inicjowane gestami użytkownika. Wszystko działa dobrze do IOS12. Teraz, gdy IOS13 jest niedostępny, nic już nie działa.
Działa na wszystkich komputerach stacjonarnych, Androidzie i iOS do IOS13.
Masz pomysł na to, co się dzieje?
Podczas debugowania za pomocą Safari na komputerze stacjonarnym podłączonym do iPhone'a nie ma żadnych komunikatów o błędach.
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
źródło
źródło
audioContext.resume();
Linia powinna zadbać o to, ale myślę, że co za tym idzie powinna być w postanowieniu obietnicy, tak:. AudioContext.resume (), a następnie (function () {player.play () playbutton.innerHTML = „Pauza”; playStatus = „isPlaying”;}src
statyczny pełny adres URL. Działa to jednak tylko wtedy, gdy opuścisz Safari, a następnie otworzysz go ponownie. Bardzo dziwne zachowanie.Odpowiedzi:
Niestety,
AudioContext.createMediaElementSource
został zepsuty od czasu wydania iOS 13. Błąd został naprawiony: https://bugs.webkit.org/show_bug.cgi?id=203435 . Jest w przeglądarce Safari Technology Preview 99 .źródło
Ten problem został błędnie zgłoszony jako naprawiony w iOS 13.3.1 (28 stycznia 2020 r.). Niemniej jednak, jak każdy może przeczytać w tym raporcie o błędach WebKit 203435 , problem nadal występuje od 7 kwietnia 2020 r., Daty wydania iOS 13.4.1.
Raport o błędzie nie zawiera żadnych dalszych informacji dotyczących szacowanej daty, w której błąd zostanie naprawiony. Niestety, 80% użytkowników iOS (około 14% całego rynku mobilnego, według Statcounter) było błędnie niezdolnych do używania WebAudio na swoich urządzeniach od miesięcy.
Co gorsza dla nas, programistów, Safari nie zgłasza żadnego błędu. Zatem nawet próba wyobrażenia sobie powrotu do stanu rzeczy nie jest ani możliwa, ani bardzo trudna.
źródło