Автозапуск HTML5 аудио / видео в iOS5 - PullRequest
4 голосов
/ 08 ноября 2011

У меня есть веб-приложение HTML5 со звуковыми эффектами. Я пытаюсь заставить эти эффекты работать в iOS5 и не могу на всю жизнь.

Хотите знать, есть ли у кого-нибудь обходные пути, чтобы получить JS-контроль над аудио / видео-контролем HTML5 в iOS5.

Или даже способ управлять несколькими аудиофайлами одним щелчком мыши. На данный момент, если у меня есть 10 звуковых эффектов, мне понадобится 10 пользовательских кликов, чтобы получить контроль над всеми ними, что составляет абсурд !

Ответы [ 3 ]

7 голосов
/ 08 ноября 2011

Абсурб, но вы должны видеть это с точки зрения iPhone или любого мобильного телефона.Это мобильный телефон, проходящий через сотовую сеть с ограничениями полосы пропускания, о которых многие знают из недавней рекламы Sprint.Они не хотят, чтобы пользователи превышали лимит пропускной способности, потому что какой-то сайт отправляет на их телефон большой объем данных, не предпринимая никаких действий.

Ниже приводится выдержка из официальной Safari Developer Library * 1004.* с более подробной информацией.

Пользовательский контроль загрузок через сотовые сети

В Safari на iOS (для всех устройств, включая iPad), где пользователь может находиться в сотовой сети иплата за единицу данных, предварительная загрузка и автозапуск отключены.Данные не загружаются, пока пользователь не инициирует их.Это означает, что методы JavaScript play () и load () также неактивны до тех пор, пока пользователь не начнет воспроизведение, если только метод play () или load () не будет вызван действием пользователя.Другими словами, кнопка Play, инициированная пользователем, работает, но событие onLoad = "play ()" - нет.

Воспроизводит фильм: <input type="button" value="Play" onClick="document.myMovie.play()">

Это ничего не делает на iOS: <body onLoad="document.myMovie.play()">

6 голосов
/ 22 апреля 2012

Из-за Apple они ограничили функции автоматического воспроизведения, чтобы предотвратить оплату данных сотовой связи. В xcode4 я добавил обходной путь, хотя. В вашем "webViewDidFinishLoad" отправьте вызов javascript для автоматического воспроизведения видео, и оно работает. Я попытался это в HTML-файл с обычным JavaScript, но это не сработало. Делая это через webViewDidFinishLoad, добился цели, хотя. В этом примере я хочу автоматически воспроизвести видео на моей странице index.html. У меня есть функция JavaScript на этой странице, называемая startVideo ().

- (void)webViewDidFinishLoad:(UIWebView *)webView{
    NSURLRequest* request = [webView request];
    NSString *page = [request.URL lastPathComponent];
    if ([page isEqualToString:@"index.html"]){
        NSString *js = @"startVideo();";
        [myWebMain stringByEvaluatingJavaScriptFromString:js];
    }
}

А вот моя функция JavaScript:

<script>
function startVideo(){
var pElement3 = document.getElementById('myVideo');
pElement3.play();
}
</script>

А вот HTML, если вы новичок в HTML видео

<video id="myVideo" poster="index_poster.png" width="1024" height="768" xcontrols     autoplay="autoplay">
<source src="flow.m4v" type="video/mp4"/>
browser not supports the video
</video>
0 голосов
/ 08 ноября 2011

Вы пробовали что-то подобное ??

function clickedOnce(){
  $('audio').each(function(){
      this.play();
  });
}
...