Автозапуск аудио на мобильном 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 сбрасывает его.
