Воспроизведение аудио на iPad
Я работаю над сайтом, на котором есть чат для клиента, однако у нас возникают проблемы со звуком в 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 Я украл где-то, что на самом деле представляет собой два разных метода в одной функции. Обратите внимание: script находится в поддире, поэтому путь правильный.
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);
}
}
Оба метода, похоже, не работают. Я что-то делаю неправильно?
Ответы
Ответ 1
Ну, ответ был несколько очевиден.
После того, как вы потратили много времени на исследования и т.д., я нашел статью в официальной документации Safari:
В Safari на iOS (для всех устройств, включая iPad), где пользователь может находиться в сотовой сети и заряжаться на единицу данных, предварительная загрузка и автовоспроизведение отключены. Никакие данные не загружаются до тех пор, пока пользователь не инициирует его. Это означает, что методы JavaScript play() и load() также неактивны, пока пользователь не начнет воспроизведение, если только метод play() или load() не вызван действием пользователя. Другими словами, пользовательская кнопка воспроизведения работает, но событие onLoad = "play()" не работает.
Итак, в принципе, вы не можете запускать звук без запуска пользователя сначала. В качестве решения я создал кнопку отключения звука, которая отключена по умолчанию, поэтому вам нужно щелкнуть по ней, которая воспроизводит звук уведомления. Впоследствии я могу использовать Javascript для воспроизведения звука без взаимодействия с пользователем.
Спасибо, Safari за это великое будущее. Большое спасибо.
Ответ 2
С выпуском iOS 6 для iPad звук, воспроизводимый во время onLoad, по-прежнему не поддерживается для iPad.
Для iPhone с iOS 6 аудио будет воспроизводиться только во время html-сайта onLoad, если в iPhone подключены наушники, подключенные к аудиоразъему на iPhone.
Ответ 3
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();
}
Ответ 4
Попробуйте поместить MP3 в качестве первого источника, а не второго. IPad имел обыкновение иметь проблему, где он всегда играл первый источник независимо от того, что (возможно, оно было исправлено к настоящему времени, но это стоит попробовать).
Также попробуйте изменить type
на audio/mp3
.