Почему файлы iPhone.play() не воспроизводятся на сафари iPhone?

У меня работает веб-приложение JavaScript, которое периодически воспроизводит некоторые звуки:

var SOUND_SUCCESS = new Audio('success.mp3');
SOUND_SUCCESS.play();

Это отлично работает на настольных браузерах (протестировано в Edge и Chrome), но не работает в Safari на iPhone.

Я просмотрел Stack Overflow, и несколько лет назад я нашел несколько ответов, что невозможно воспроизводить аудио с Safari, если вы не находитесь в этом полноэкранном проигрывателе. Это все еще так?

Ответ 1

iOs отключает автовоспроизведение, вместо этого требуется, чтобы воспроизведение было инициировано как часть взаимодействия с пользователем (например, вы можете начать воспроизведение в прослушивателе touchstart). Там немного документации об этом в документации разработчика Apple. Также в этой статье Преодоление ограничений на аудио iOS HTML5 на веб-сайте разработчика IBM, где есть примеры и подробности.

Ответ 2

IOS на мобильном телефоне отключает автоматическое воспроизведение звука по умолчанию. Так что обойти эту проблему. Вы можете поместить кнопку включения/выключения где-нибудь на странице и воспроизвести некоторый звук, используя аудиоэлемент (" audioElement "), если пользователь нажимает кнопку переключателя.

После этого тот же самый " audioElement " может использоваться для воспроизведения будущих звуков путем изменения его атрибута " src " и вызова его метода " play() " без какого-либо дальнейшего взаимодействия с пользователем.

Ответ 3

Чтобы добавить к xingliang cai response, вот пример кода, который я получил для меня:

const soundEffect = new Audio();

// onClick of first interaction on page before I need the sounds
soundEffect.play();

// later on when you actually want to play a sound at any point without user interaction
soundEffect.src = 'path/to/file.mp3';
soundEffect.play();