Почему файлы 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();