Делаем приложение через Ionic/Cordova; компилю на платформу browser; через библиотeку медиа пытаюсь запустить мелодию по событию (пришел заказ от клиента).
Столкнулся с такой проблемой: если PUSH работает нормально, то на попытку инициализировать звук когда открыто приложение через мобильный хром — ну ни как не получается. Вылетает такая ошибка:
Uncaught (in promise) DOMException: play() can only be initiated by a
user gesture.
И да, я читал, что это такое и немного вот об этом и этом
Понаходил советы, что нужно вызов проигрывания цеплять на click или другой жест. Но, при всех прочих, захожу в ВК с мобильного браузера, смотрю на страницу — мне присылают сообщение, и звук идёт (не от PUSH, а от браузера)!
Вопрос: как у них это получилось? И как мне сделать такое же (хотя бы в теории)?
Буду рад любым идеям. Спасибо.
Ответ
function initAudioItems(e) {
if (e.originalEvent !== undefined) {
var dom_item = document.getElementById('my_audio');
dom_item.muted = true;
dom_item.play()
.catch(function(e) {
console.log(e);
});
dom_item.pause();
dom_item.muted = false;
$(dom_item).data('init', true);
$('body').off('click', initAudioItems);
}
}
// init audio
$('body').on('click', initAudioItems);
Если пользователь хоть раз кликнет на странице - аудио беззвучно запустится и остановится. После этого вы можете запускать его по произвольному событию.
Как ни старался не смог найти как такую инициализацию повесить на пролистывание, только на клик работает.
Комментариев нет:
Отправить комментарий