Автозапуск аудио на мобильном safari
прежде чем я сгорю до смерти, я знаю, что это не работает в настоящее время из-за беспокойства Apple о страшной стоимости для своих пользователей автоматической загрузки аудиофайла (ничего общего с ними, пытающимися искалечить веб-приложения, поскольку они не получают от них 30%).
тем не менее, мой вопрос: кто-нибудь нашел хитрый обходной путь? Я просто хочу воспроизвести звук запуска при запуске игры и в настоящее время должен ждать, пока пользователь щелкнет где-нибудь, прежде чем я смогу играть аудио. Кто-то из вас, умных парней, уже должен был это сделать?
3 ответов
нет никаких шансов получить автозапуск, работающий в мобильных браузерах. Android и iOS не позволяют этого, и лично я думаю, что это возможное ограничение! Представьте, что каждый второй веб-сайт вы откроете пьесы и уродливый звук в начале!
но вы можете сделать немного взломать, так что пользователь не заметит, что он в настоящее время начал аудио для вашего приложения:
вам понадобится взаимодействие с пользователем для запуска звука. Итак, ваше приложение или игра, возможно, имеет startscreen или кнопка приветствия, которая нуждается в щелчке, чтобы добраться до mainmenu или начать игру. Привязка к пользовательскому событию (принятые события:" click"," touchend"," doubleclick "и" keydown") и вызов метода load() для вашего
<audio>
.привязка к событию "canplaythrough"
<audio>
. Это событие запускается, когда ваш источник готов к воспроизведению. Здесь вы можете вызвать play (), pause () или дождаться других взаимодействий. Итак, аудио готово, но теперь у вас есть полный АБ, когда начать или остановить звук.Я также советую вам использовать аудио спрайты на мобильных клиентах. iOS (и Android?) внутренне реализованная поддержка аудио через Синглтон. Это означает, что вы не можете, как в настольном браузере, иметь 10 аудиоэлементов и воспроизводить разные звуки одновременно. Вы можете играть только один файл! Таким образом, изменение источника для разных звуков занимает много времени. С помощью audio sprite вы можете запускать свои спрайты, когда пользователь впервые взаимодействует с ваш сайт или игра. Приостановите спрайт, и когда вам нужно воспроизвести звук, вы должны установить currentTime в начало спрайта и приостановить спрайт, когда currentTime вашего файла достигнет конца вашего спрайта. Существует событие timeupdate, где вы можете проверить currentTime вашего спрайта.
Если вы больше заинтересованы, я могу подготовить свой javascript audio sprites player для вас!!
единственное решение, которое я видел до сих пор, - это создать приложение оболочки и поместить веб-приложение в UIWebView.
http://flowz.com/2011/03/apple-disabled-audiovideo-playback-in-html5/
UIWebView.allowsInlineMediaPlayback = YES;
UIWebView.mediaPlaybackRequiresUserAction = NO;
Я также хотел бы знать, как это сделать в обычном веб-приложении.
Я считаю, что я просто решил это для моего собственного приложения.
действия,
контроллер загружается,
затем.... в метод viewDidLoad
пусть ваш веб-вид загрузит HTML: loadHTMLString:htmlFile baseURL: [self getBasePath]];
затем... установите mediaPlaybackRequiresUserAction = нет в webview.
Если вы установите его слишком рано, я думаю, что загрузка для html сбрасывает его.