Я пытаюсь написать небольшую библиотеку для удобных манипуляций со звуком. Я знаю о политике автозапуска для медиа-элементов, и я играю аудио после взаимодействия с пользователем:
const contextClass = window.AudioContext || window.webkitAudioContext;
const context = this.audioContext = new contextClass();
if (context.state === 'suspended') {
const clickCb = () => {
this.playSoundsAfterInteraction();
window.removeEventListener('touchend', clickCb);
this.usingAudios.forEach((audio) => {
if (audio.playAfterInteraction) {
const promise = audio.play();
if (promise !== undefined) {
promise.then(_ => {
}).catch(error => {
// If playing isn't allowed
console.log(error);
});
}
}
});
};
window.addEventListener('touchend', clickCb);
}
Вкл. android chrome все в порядке и в настольном браузере. Но на мобильном Safari я получаю такую ошибку в обещании:
запрос не разрешен пользовательским агентом или платформой в текущем контексте. Safari
Я пытался чтобы создать aud ios после взаимодействия, измените их свойство "sr c". В любом случае я получаю эту ошибку.
Я просто создаю аудио в js:
const audio = new Audio(base64);
, добавляю его в массив и пытаюсь воспроизвести. Но ничего ... Пробовал создавать и играть через несколько секунд после взаимодействия - ничего.