Автозапуск аудио на мобильном safari

прежде чем я сгорю до смерти, я знаю, что это не работает в настоящее время из-за беспокойства Apple о страшной стоимости для своих пользователей автоматической загрузки аудиофайла (ничего общего с ними, пытающимися искалечить веб-приложения, поскольку они не получают от них 30%).

тем не менее, мой вопрос: кто-нибудь нашел хитрый обходной путь? Я просто хочу воспроизвести звук запуска при запуске игры и в настоящее время должен ждать, пока пользователь щелкнет где-нибудь, прежде чем я смогу играть аудио. Кто-то из вас, умных парней, уже должен был это сделать?

3 ответов


нет никаких шансов получить автозапуск, работающий в мобильных браузерах. Android и iOS не позволяют этого, и лично я думаю, что это возможное ограничение! Представьте, что каждый второй веб-сайт вы откроете пьесы и уродливый звук в начале!

но вы можете сделать немного взломать, так что пользователь не заметит, что он в настоящее время начал аудио для вашего приложения:

  1. вам понадобится взаимодействие с пользователем для запуска звука. Итак, ваше приложение или игра, возможно, имеет startscreen или кнопка приветствия, которая нуждается в щелчке, чтобы добраться до mainmenu или начать игру. Привязка к пользовательскому событию (принятые события:" click"," touchend"," doubleclick "и" keydown") и вызов метода load() для вашего <audio>.

  2. привязка к событию "canplaythrough"<audio>. Это событие запускается, когда ваш источник готов к воспроизведению. Здесь вы можете вызвать play (), pause () или дождаться других взаимодействий. Итак, аудио готово, но теперь у вас есть полный АБ, когда начать или остановить звук.

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