it-swarm.com.de

Warum können keine JavaScript-.play () - Audiodateien auf einer iPhone-Safari sein?

Ich habe eine JavaScript-Web-App, die in der Regel einige Audiodateien wie diese wiedergibt:

var SOUND_SUCCESS = new Audio('success.mp3');
SOUND_SUCCESS.play();

Dies funktioniert gut auf Desktop-Browsern (getestet in Edge und Chrome), kann jedoch nicht auf Safari auf dem iPhone wiedergegeben werden.

Ich habe mich in Stack Overflow umgesehen und einige Antworten von vor einigen Jahren gefunden, dass es nicht möglich ist, Audio von Safari abzuspielen, wenn Sie nicht in diesem Vollbild-Player sind. Ist das immer noch so?

17
Leon Overweel

iOs deaktiviert die automatische Wiedergabe, stattdessen muss die Wiedergabe als Teil einer Benutzerinteraktion gestartet werden (z. B. können Sie die Wiedergabe innerhalb eines Touchstart-Listeners starten). Dazu gibt es eine Dokumentation auf Apples Entwicklerdokumentation . Es gibt auch diesen Artikel Überwindung von iOS-HTML5-Audiobeschränkungen auf der IBM-Entwicklerseite, die Beispiele und mehr Details enthält.

20
Ed Ballot

IOS on Mobile deaktiviert standardmäßig die automatische Tonwiedergabe. Um dieses Problem zu umgehen. Sie können den Schalter aktivieren/deaktivieren an einer beliebigen Stelle auf der Seite platzieren und einen Ton mit einem Audioelement (" audioElement ") wiedergeben, wenn der Benutzer auf den Schalter der Schaltfläche klickt. 

Danach kann dasselbe " audioElement " verwendet werden, um zukünftige Sounds wiederzugeben, indem das Attribut " src " geändert und die Methode " play () " ohne weitere Benutzerinteraktion aufgerufen wird.

0
xingliang cai

Um die Antwort von xingliang cai zu ergänzen, hier ein Codebeispiel, das ich für mich arbeiten lassen muss:

const soundEffect = new Audio();

// onClick of first interaction on page before I need the sounds
soundEffect.play();

// later on when you actually want to play a sound at any point without user interaction
soundEffect.src = 'path/to/file.mp3';
soundEffect.play();
0
user2415116