Аудио не воспроизводится на мобильном сафари даже после взаимодействия с пользователем - PullRequest
0 голосов
/ 18 февраля 2020

Я пытаюсь написать небольшую библиотеку для удобных манипуляций со звуком. Я знаю о политике автозапуска для медиа-элементов, и я играю аудио после взаимодействия с пользователем:

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);

, добавляю его в массив и пытаюсь воспроизвести. Но ничего ... Пробовал создавать и играть через несколько секунд после взаимодействия - ничего.

...