Ответ 1
Невозможно заставить работать автозапуск в мобильных браузерах. Android и iOS не позволяют этого, и лично я думаю, что это разумное ограничение! Представьте, что на каждом втором сайте вы будете открывать игры и безобразный звук при запуске!
Но вы можете сделать небольшой взлом, чтобы пользователь не заметил, что он в настоящее время запустил аудио для вашего приложения:
-
Вам понадобится взаимодействие с пользователем, чтобы начать аудио. Таким образом, ваше приложение или игра может иметь начальный экран или кнопку приветствия, которая требует щелчка, чтобы войти в главное меню или запустить игру. Привязать к пользовательскому событию (допустимые события: "click", "touchend", "doubleclick" и "keydown") и вызвать метод load() для вашего
<audio>
. -
Привязать к событию "canplaythrough"
<audio>
. Это событие срабатывает, когда ваш источник готов к игре. Здесь вы можете теперь вызвать play(), pause() или дождаться других взаимодействий. Итак, звук готов, но теперь у вас есть полный контроль, когда начинать или останавливать звук. -
Я также советую вам использовать аудио спрайты на мобильных клиентах. В iOS (и Android?) реализована внутренняя поддержка аудио через Singleton. Это означает, что вы не можете, как в настольном браузере, иметь 10 аудиоэлементов и воспроизводить разный звук одновременно. Вы можете играть только один файл! Таким образом, изменение источника для разных звуков занимает много времени. С аудио спрайтом вы можете запустить свои спрайты, когда пользователь впервые взаимодействует с вашим сайтом или игрой. Приостановите ваш спрайт, и когда вам нужно воспроизвести звук, вы должны установить currentTime в начало спрайта и приостановить спрайт, когда currentTime вашего файла достигнет конца вашего спрайта. Событие timeupdate, где вы можете проверить currentTime вашего спрайта.
Если вам больше интересно, я могу подготовить для вас мой проигрыватель аудио спрайтов javascript !!