Как исправить воспроизведение звука () в React для iOS? - PullRequest
0 голосов
/ 02 января 2019

Я делаю приложение таймера в React.Когда таймер возвращается к 0, он должен воспроизводить звуковой файл WAV.Он отлично работает на IE, Chrome, Edge, Android, но не на iOS.

Я нашел объяснение, почему это происходит, но не как обойти это.

В Safari на iOS (для всех устройств, включая iPad), где пользователь может находиться в сотовой сети и получать плату за единицу данных, предварительная загрузка и автозапуск отключены.Данные не загружаются, пока пользователь не инициирует их.Это означает, что методы JavaScript play () и load () также неактивны до тех пор, пока пользователь не начнет воспроизведение, если только метод play () или load () не будет вызван действием пользователя.Другими словами, кнопка Play, инициированная пользователем, работает, а событие onLoad = "play ()" - нет.( Источник: Apple Developer )

 <audio id="beep" src="http://www.pacdv.com/sounds/interface_sound_effects/sound106.wav"></audio>

 startTimer = () => {
      document.getElementById('beep').play();
 }

Функция запуска по таймеру запускается, когда таймер достигает 0, а не по событию щелчка.Ожидаемый результат будет на iOS для воспроизведения аудио при обратном отсчете до 0.

...