IOS13 bozuk <audio> etiketleri, ses içeriğine bağlı ses arabellekleri olarak mı kullanıldı?


10

Şu anda kullanıcıların ses içeriğine bağlı basit ses etiketlerini oynatmasına izin veren bir web sitesi geliştiriyoruz. Kullanıcı hareketleriyle başlatılan oynatma gibi IOS ile ilgili teknik sorunların farkındayız. Her şey IOS12'ye kadar iyi çalışıyor. Artık IOS13 çıktı, artık hiçbir şey çalışmıyor.

IOS13'e kadar tüm masaüstü, android ve IOS üzerinde çalışır.

Neler olduğu hakkında bir fikrin var mı?

İphone'a bağlı Masaüstünde Safari ile hata ayıklama sırasında konsolda hata mesajı yok.

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>


1
Maden uygulaması da kırıldı. Ancak, tıklamadan önce ses içeriği oluşturduğunuzu görüyorum, ios 12'de buna izin verilmedi.
shukshin.ivan

audioContext.resume();Çizgi olduğunu dikkat etmelisiniz, ama böyle, söz gidermek olmalıdır izler ne düşünüyorsunuz. AudioContext.resume () daha sonra (function () {player.play () playbutton.innerHTML = "Pause"; playStatus = 'isPlaying';}
Paulie

Ben zaten kod içinde söz eklendi. Ancak vaadiyle veya söz vermeden, her şeyi değiştirir.
JohnLoyd

Aynı problemim var. Tek fark, ses etiketinin tek bir sayfa uygulamasında dinamik olarak oluşturulmasıdır. Kısmen srcstatik bir tam URL ile çalışarak aldım . Ancak, yalnızca Safari'den ayrılıp tekrar açarsanız çalışır. Çok garip davranışlar.
Pantolon

Yanıtlar:


3

Ne yazık ki, AudioContext.createMediaElementSourceiOS 13'ün piyasaya sürülmesinden bu yana bozuldu. Hatanın Safari Teknoloji Önizleme 99'da düzeltildiği bildirildi : https://bugs.webkit.org/show_bug.cgi?id=203435 , ancak son zamanlarda hala bozuk iOS'un piyasaya sürülmesi, böylece burada bulunabilecek yeni bir hata raporu sunuldu: https://bugs.webkit.org/show_bug.cgi?id=211394


Görünüşe göre webkit geliştiricileri birkaç gün önce düzeltildi, ancak hala en son iOS sürümünde sorun yaşıyorum. Bir sonraki ios sürümü veya webkit sürümü ile düzeltilecek mi? Kafam karıştı.
Şemsiye

@Umbrella Cevabımı en son güncellemelerle düzenledim.
Jordy van Dortmont

2

Bu sorunun yanlışlıkla iOS 13.3.1'de (28 Ocak 2020) düzeltildiği bildirildi. Bununla birlikte, bu WebKit hata raporu 203435'ten herkesin okuyabileceği gibi , sorun hala iOS 13.4.1'in yayınlanma tarihi olan 7 Nisan 2020'den beri var.

Hata raporu, bu hatanın düzeltileceği tahmini tarihle ilgili başka bilgi sağlamaz. Maalesef, iOS kullanıcılarının% 80'i (Statcounter'a göre toplam mobil pazarın yaklaşık% 14'ü) yanlışlıkla aylardır cihazlarında WebAudio kullanmaktan aciz durumda.

Geliştiriciler için işleri daha da kötüleştiren şey, Safari'nin herhangi bir hata bildirmemesidir. Böylece, düşmeyi hayal etmeye çalışmak bile mümkün ya da çok zor değildir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.