Воспроизведение аудио на iPad - PullRequest
15 голосов
/ 18 ноября 2011

Я работаю над веб-сайтом, в котором есть чат для клиента, однако у нас возникают проблемы со звуком в iPad (iOS 5).

Фактически целью является iPad с поддержкойIE7 предпочтителен.

Я пробовал эти подходы:

HTML5

<audio id="notification" preload="auto">
    <source src="audio/notification.ogg" type="audio/ogg" />
    <source src="audio/notification.mp3" type="audio/mpeg" />
</audio>

С некоторыми javascript

var el = document.getElementById('notification');
el.play();

Некоторая функция javascript Я где-то украл, что на самом деле это два разных метода в одной функции.Обратите внимание, что скрипт находится в подкаталоге, поэтому путь указан правильно.

function notify() {
    var url = '../audio/notification.mp3';
    var a = document.createElement('audio');

    if(!!(a.canPlayType && a.canPlayType('audio/mpeg').replace(/no/, ''))) {
        var sound = new Audio(url);
        sound.load();
        sound.play();
    } else {
        $('#notification').remove();
        var sound = $('<embed id="notification" type="audio/mpeg" src="'+url+'" loop="false" hidden="true" autostart="true" />');
        $(body).append(sound);
    }
}

Кажется, что оба метода не работают.Я что-то не так делаю?

Ответы [ 5 ]

25 голосов
/ 24 ноября 2011

Ну, ответ был несколько очевиден.

После большого количества времени, потраченного на исследования и т.д., я нашел статью в официальной документации Safari, говорящую:

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

Таким образом, в принципе, вы не можете запустить звук без запуска пользователем.вначале.В качестве решения я создал кнопку отключения звука, которая по умолчанию отключена, поэтому вы должны нажать на нее, чтобы воспроизвести звук уведомления.После этого я могу использовать Javascript для воспроизведения звука без взаимодействия с пользователем.

Спасибо Safari за это большое будущее.Большое спасибо.

6 голосов
/ 18 октября 2012

С выходом iOS 6 для iPad воспроизведение звука во время загрузки onLoad все еще не поддерживается для iPad.

Для iPhone с iOS 6 звук будет воспроизводиться только во время загрузки сайта в формате html, если в iPhone подключены наушники к аудиоразъему.

5 голосов
/ 31 августа 2012

Apple iPad не позволяет воспроизводить звуки без щелчка, инициированного пользователем ранее.

Решение: Добавьте кнопку воспроизведения / паузы.

App.toggle_audio = function(elem) {
  var icon = elem.find("i");
  var playing = _.include(icon.attr('class').split(" "), "icon-pause")
  if (playing) {
    elem.html("<i class='icon-play'></i> " + App.translate_play_audio);
    App.play_audio_toggle = false;
  } else {
    App.audio_file.load();
    elem.html("<i class='icon-pause'></i> " + App.translate_pause_audio);
    App.play_audio_toggle = true;
  }
}

После того, как пользователь нажал кнопку один разАудио загружено.Затем вы можете воспроизвести его через Javascript.

  if (App.play_audio_toggle) {
    App.audio_file.play();
  }
1 голос
/ 02 августа 2018

Исходный код (простая версия)

HTML

 <div id="enableSound"> Enable Sound</div>

JS

var sound = new Audio("/Assets/audio/yourAudio.mp3");;
 $("#enableSound").click(function() {
     sound.play();
  });

Пользователь должен нажимать на div "#enableSound", с того момента, когда вы захотите играть над звуком, просто позвоните

sound.play()

http://jsbin.com/virixukavo/1/edit?html,js,output

0 голосов
/ 18 ноября 2011

Попробуйте указать MP3 в качестве первого источника, а не второго.У iPad раньше была проблема, когда он всегда воспроизводил первый источник, несмотря ни на что (возможно, он уже исправлен - но стоит попробовать).

Также попробуйте изменить type на audio/mp3.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...