Audio Session — was es ist, Kategorien und Konfiguration in iOS

Autor: IT Sectr Veröffentlicht: 2026-05-24 Lesezeit: 8 Min.

Audio Session ist der zentrale Mechanismus in iOS zur Verwaltung des Audioverhaltens einer App: Interaktion mit dem System, Behandlung von Unterbrechungen und Audio-Routing. Jede iOS-App erhält eine einzige Audiosession, die bestimmt, wie sich Sound bei gesperrtem Bildschirm, während Anrufen und beim Verbinden von Bluetooth verhält. Laut Apple Developer Documentation, 2026 wird Audio Session über eine Kategorie und einen Modus konfiguriert — ohne korrekte Konfiguration kann die App im Hintergrund möglicherweise keinen Sound abspielen.

Wichtige Punkte

  • Audio Session (AVAudioSession) ist ein Systemobjekt in iOS, das das Audioverhalten der App auf Betriebssystemebene verwaltet.
  • Die Session-Kategorie definiert das grundlegende Verhalten: playback, record, ambient, playAndRecord und andere.
  • Modi und Optionen verfeinern das Verhalten: default, voiceChat, videoRecording, allowBluetooth.
  • Bei einer Unterbrechung (Anruf, Alarm) erhält die Session eine Benachrichtigung über NotificationCenter mit dem Typ interruptionType.
  • Für die Hintergrundwiedergabe muss Background Modes — Audio, AirPlay and Picture in Picture aktiviert werden.

Was ist Audio Session?

Audio Session ist eine einzelne AVAudioSession-Instanz, die vom System beim Start einer App erstellt wird und während des gesamten Lebenszyklus existiert. Sie fungiert als Vermittler zwischen der App und dem iOS-Audiosystem: Die Kategoriekonfiguration bestimmt, ob die App im Hintergrund Sound abspielen darf, ob der Sound während eines Anrufs stummgeschaltet wird und an welche Geräte Audio ausgegeben wird.

Im Gegensatz zu Android Audio Focus, wo jede App unabhängig den Fokus anfordert und freigibt, wird iOS Audio Session zentral über eine Session pro App verwaltet. Wenn eine Session aktiviert wird, deaktiviert das System automatisch die Session der vorherigen App und sendet ihr eine Unterbrechungsbenachrichtigung. Dieser architektonische Unterschied definiert die unterschiedlichen Ansätze zur Audioverarbeitung auf den beiden Plattformen.

Laut WWDC 2024 Session 211 werden etwa 40% der Audioprobleme in iOS-Apps durch falsche Audio Session-Konfiguration verursacht. Der häufigste Fehler ist die Wahl der Kategorie ambient anstelle von playback, wodurch der Ton bei gesperrtem Bildschirm verschwindet.

Wie AVAudioSession funktioniert

Beim Start erhält die App die sharedInstance der Session, setzt die Kategorie über den Aufruf setCategory(_:mode:options:) und aktiviert die Session über setActive(true). Nach der Aktivierung berücksichtigt iOS die Kategorierichtlinien für das Routing. Wenn eine andere App ihre Session aktiviert, erhält die aktuelle eine AudioSessionInterruptionType.began-Benachrichtigung über Notification.Name.AVAudioSessionInterruption.

Audio Session Kategorien

Die Kategorie ist der Hauptparameter von Audio Session, der sechs vordefinierte Verhaltensoptionen definiert. Die Wahl einer Kategorie ist die erste und wichtigste Entscheidung bei der Einrichtung von Audio in iOS.

KategorieWann verwendenHintergrundaudioStummschalter beeinflusst
ambientSpiele, HintergrundeffekteNeinJa
playbackMusik, Podcasts, HörbücherJaNein
recordSprachmemos, AudioaufnahmeNeinN/V
playAndRecordVoIP, SprachnachrichtenJaNein
multiRouteDJ-Mixer, KaraokeJaNein
soloAmbientStandard (iOS default)NeinJa

Playback-Kategorie — die Hauptwahl für Player

Für Musik- und Videoplayer verwenden Sie immer playback. Diese Kategorie erlaubt: Tonwiedergabe bei gesperrtem Bildschirm, bei ausgeschaltetem Stummschalter (physischer Knopf am iPhone) und bei minimierter App. Ohne die Playback-Kategorie wird die Session bei gesperrtem Bildschirm oder minimierter App deaktiviert.

Die Kategorie ambient eignet sich für Spiele und Apps mit Hintergrundgeräuschen — sie erlaubt anderen Apps, weiterzuspielen. Wenn ein Benutzer beispielsweise Musik hört und ein Spiel mit einer Ambient-Session öffnet, läuft die Musik über die Spielgeräusche weiter. Dies ist ein grundlegender Unterschied zu Android, wo ein solches Szenario eine explizite Duck-Erlaubnis erfordert.

So konfigurieren Sie Audio Session

Die Audio Session-Konfiguration sollte vor Beginn einer Wiedergabe erfolgen. Es wird empfohlen, die Session in der Methode application(_:didFinishLaunchingWithOptions:) oder im Initialisierer des Players zu konfigurieren. Nach dem Setzen der Kategorie muss die Session aktiviert werden.

Grundlegende Audio Session-Einrichtung in Swift

swift
import AVFAudio

let session = AVAudioSession.sharedInstance

do {
    try session.setCategory(
        playback,
        mode: default,
        options: [allowBluetooth, defaultToSpeaker]
    )
    try session.setActive(true)
} catch {
    print("Audio Session-Einrichtung fehlgeschlagen: \(error.localizedDescription)")
}

Der Parameter options enthält allowBluetooth (Ausgabe an Bluetooth-Headset) und defaultToSpeaker (Wiedergabe über den Lautsprecher statt über die Hörmuschel). Die Option allowBluetooth ist für Apps erforderlich, die Bluetooth-Kopfhörer unterstützen — ohne sie kann der Ton selbst bei angeschlossenem Headset an den integrierten Lautsprecher geleitet werden.

Konfiguration für Aufnahme und Wiedergabe (VoIP)

swift
let session = AVAudioSession.sharedInstance
try session.setCategory(
    playAndRecord,
    mode: voiceChat,
    options: [allowBluetooth, allowBluetoothA2DP]
)

try session.overrideOutputAudioPort(speaker)
try session.setActive(true)

Die Kategorie playAndRecord mit dem Modus voiceChat optimiert den Audiopfad für Sprachkommunikation: aktiviert Echounterdrückung, automatische Verstärkungsregelung (AGC) und wählt den optimalen Codec. OverrideOutputAudioPort(.speaker) erzwingt die Ausgabe über den Lautsprecher, auch wenn ein Headset angeschlossen ist — nützlich für die Freisprecheinrichtung.

Aktivierung und Deaktivierung der Session

Der Aufruf von setActive(true) aktiviert die Session und benachrichtigt das System, dass die App Audio verwendet. Wenn die Wiedergabe pausiert wird, empfiehlt es sich, die Session zu deaktivieren, damit andere Apps den Audiostream erhalten. Eine Ausnahme bilden Apps mit langer Hintergrundwiedergabe (Musik, Podcasts), bei denen die Session während des gesamten Titels aktiv bleibt.

Es ist wichtig, Fehler bei setActive zu behandeln. Wenn eine andere Session mit hoher Priorität aktiv ist (z. B. Telefon während eines Anrufs), kann setActive einen Fehler auslösen. In diesem Fall müssen Sie auf die AudioSessionInterruptionType.ended-Benachrichtigung warten und die Aktivierung erneut versuchen.

Audio Session Modi und Richtlinien

Der Modus verfeinert die Kategorie und optimiert den Audiopfad für einen bestimmten Anwendungsfall. Jeder Modus ändert das Verhalten von AGC, Echounterdrückung und Codecs. Modi ersetzen die Kategorie nicht, sondern ergänzen sie — eine Kategorie kann mit verschiedenen Modi arbeiten.

  • default — Standardmodus für Musik und Video. AGC aus, minimale Echounterdrückung.
  • voiceChat — Optimierung für VoIP. Aktiviert Echounterdrückung, AGC, Rauschunterdrückung. Verwenden Sie mit der Kategorie playAndRecord.
  • videoRecording — für Videoaufnahmen. Priorisiert Aufnahmequalität über Wiedergabe. Verwenden Sie mit der Kategorie record oder playAndRecord.
  • measurement — für Audiomessungen. Minimale Signalverarbeitung, kein AGC oder Echounterdrückung.
  • gameChat — für Sprachchat in Spielen. Ähnlich wie voiceChat, aber mit Priorität für Spielaudio.
  • moviePlayback — zum Anschauen von Filmen. Optimierung für Mehrkanal-Audio (5.1, 7.1) und Dolby Atmos.

Audio Session Kategorieoptionen

Optionen bieten eine Feinabstimmung des Sessionverhaltens. Jede Option ist ein Flag, das mit anderen in einem Array kombiniert werden kann. Beispielsweise erlaubt [.allowBluetooth, .defaultToSpeaker, .interruptSpokenAudioAndMix] die Audioausgabe an ein Bluetooth-Headset, verwendet standardmäßig den Lautsprecher und mischt sich mit Hörbüchern.

Ab iOS 17+ gibt es die Option spatialAudio, die personalisierten räumlichen Klang für AirPods über AVAudioSessionSpatialPreferences aktiviert. Laut WWDC 2024 steigert räumlicher Klang das Benutzerengagement in Musik-Apps in Apples Tests um 25%.

Behandlung von Unterbrechungen und Anrufen

Unterbrechungen sind ein Hauptunterschied zwischen Audio Session und Android Audio Focus. In iOS werden Unterbrechungen über NotificationCenter durch Abonnieren von AVAudioSession.interruptionNotification behandelt. Die Benachrichtigung enthält ein Wörterbuch mit dem Unterbrechungstyp: began oder ended.

Abonnieren von Unterbrechungsbenachrichtigungen

swift
override func viewDidLoad() {
    super.viewDidLoad()
    let center = NotificationCenter.default
    center.addObserver(
        self,
        selector: #selector(handleInterruption),
        name: AVAudioSession.interruptionNotification,
        object: nil
    )
}

@objc func handleInterruption(_ notification: Notification) {
    guard let userInfo = notification.userInfo,
        let type = userInfo[AVAudioSession.interruptionTypeKey]
            as? AVAudioSessionInterruptionType
    else { return }

    switch type {
    case began:
        pausePlayback()
    case ended:
        guard let options = userInfo[AVAudioSession.interruptionOptionKey]
            as? AVAudioSessionInterruptionOptions
        else { return }

        if options.contains(shouldResume) {
            resumePlayback()
        }
    }

Beim Empfang von interruptionType.began sollte der Player die Wiedergabe pausieren. Beim Empfang von interruptionType.ended gibt die Eigenschaft interruptionOptionKey an, ob der Player automatisch fortsetzen kann (shouldResume). Wenn der Benutzer den Anruf abgelehnt hat, ist shouldResume = true. Wenn der Anruf durch Zeitüberschreitung beendet wurde — shouldResume = false, eine Fortsetzung ist nicht erlaubt.

Behandlung von Unterbrechungen durch andere Apps

Wenn eine andere App ihre Audio Session mit der Kategorie playback aktiviert, erhält die aktuelle Session eine Unterbrechungsbenachrichtigung. Wenn eine andere App ambient verwendet, erfolgt keine Unterbrechung — die Töne werden gemischt. Dieses Verhalten unterscheidet sich grundlegend von Android, wo jede Audio Focus-Aktivierung ein LOSS-Ereignis auslöst.

Für Apps, die bei Aktivierung anderer Sessions weiter abspielen müssen (z. B. Navigation während der Musikwiedergabe), verwenden Sie die Option .mixWithOthers. Diese Option erlaubt das Mischen von Sound mit anderen Apps, und es werden keine Unterbrechungen gesendet. MixWithOthers ist das iOS-Äquivalent des Duck-Modus in Android.

Audio-Routing und Bluetooth

Audio Session verwaltet automatisch das Audio-Routing zwischen integrierten Lautsprechern, Kopfhörern, Bluetooth-Headsets und AirPlay-Geräten. Die App kann die aktuelle Route über die Eigenschaft currentRoute überwachen und Benachrichtigungen über Änderungen über AVAudioSession.routeChangeNotification erhalten.

Wenn Bluetooth-Kopfhörer angeschlossen werden, schaltet iOS automatisch die Audioausgabe auf diese um, wenn die Session mit der Option allowBluetooth konfiguriert ist. Ohne diese Option läuft der Ton weiter über den integrierten Lautsprecher. Ab iOS 16 aktiviert das System beim Anschließen von AirPods Pro automatisch die ProMotion-Synchronisation zur Reduzierung der Latenz.

Überwachung von Routenänderungen

Das Abonnieren von routeChangeNotification ermöglicht Reaktionen auf das Anschließen und Trennen von Kopfhörern. Wenn ein Bluetooth-Headset getrennt wird, sollte der Player die Wiedergabe pausieren — der Benutzer erwartet möglicherweise nicht, dass der Ton aus dem Telefonlautsprecher kommt. Laut Apple HIG (2026) ist dies für Musik-Apps ein erforderliches Verhalten.

Die Eigenschaften availableInputs und availableOutputs geben eine Liste verfügbarer Audiogeräte mit ihren Typen zurück (builtInSpeaker, headphones, bluetoothA2DP, hdmi). Der Entwickler kann über overrideOutputAudioPort programmatisch ein bestimmtes Gerät für benutzerdefinierte Routingszenarien auswählen.

Häufig gestellte Fragen

Wie unterscheidet sich Audio Session von Android Audio Focus?

Der Hauptunterschied ist die Architektur. Audio Session ist eine einzige zentralisierte Session pro App, die einmal konfiguriert wird. Android Audio Focus erfordert bei jeder Wiedergabe eine manuelle Fokusanforderung. Außerdem unterstützt iOS das Mischen über die Option mixWithOthers, während in Android Duck die einzige Alternative zum vollständigen Stopp ist.

Warum verschwindet der Ton, wenn der iPhone-Bildschirm gesperrt wird?

Die häufigste Ursache ist eine falsche Audio Session-Kategorie. Wenn ambient oder soloAmbient ausgewählt ist, stoppt der Ton bei gesperrtem Bildschirm. Wechseln Sie die Kategorie zu playback und stellen Sie sicher, dass Background Modes — Audio, AirPlay, and Picture in Picture in der Info.plist hinzugefügt ist.

Wie erlaube ich zwei Apps, gleichzeitig auf iOS abzuspielen?

Fügen Sie die Option .mixWithOthers zu setCategory hinzu. Dadurch kann der Sound Ihrer App mit anderen aktiven Sessions gemischt werden. Ohne diese Option unterbricht eine neue App die aktuelle. MixWithOthers ist das Analogon des Duck-Modus in Android, jedoch mit vollständiger Lautstärkeerhaltung.

Wie schalte ich programmatisch auf einen Bluetooth-Lautsprecher um?

Verwenden Sie overrideOutputAudioPort mit nil für die automatische Auswahl. Für erzwungene Ausgabe an Bluetooth: Holen Sie sich die AVAudioSessionRouteDescription aus availableOutputs, wählen Sie einen Port vom Typ .bluetoothA2DP und übergeben Sie ihn an overrideOutputAudioPort. Stellen Sie sicher, dass die Session mit allowBluetooth konfiguriert ist.

Sollte ich setActive(false) beim Pausieren des Players aufrufen?

Für die meisten Apps — ja. Das Deaktivieren der Session bei Pause ermöglicht anderen Apps, Audiofokus zu erhalten. Die Ausnahme sind Musik-Player mit langer Hintergrundwiedergabe. Wenn die Pause kurz ist (weniger als 5 Sekunden), ist es besser, die Session für eine schnelle Wiederaufnahme aktiv zu lassen.

Zusammenfassung

  • Audio Session (AVAudioSession) ist die einzige Audiosession pro App in iOS, die das Tonverhalten auf Betriebssystemebene verwaltet.
  • Sechs Kategorien: ambient, playback, record, playAndRecord, multiRoute, soloAmbient — definieren das grundlegende Audioverhalten.
  • Für die Hintergrundwiedergabe sind die Kategorie playback und Background Modes in der Info.plist erforderlich.
  • Unterbrechungen werden über NotificationCenter mit den Typen began (Pause) und ended (Fortsetzung bei shouldResume) behandelt.
  • Die Option .mixWithOthers ermöglicht das Mischen von Sound mit anderen Apps ohne Unterbrechung.
  • Das Routing wird automatisch verwaltet, aber über routeChangeNotification überwacht, um bei Trennung der Kopfhörer zu pausieren.
  • Die Kategorie playAndRecord mit dem Modus voiceChat ist der Standard für VoIP-Apps mit Echounterdrückung und AGC.

Wir entwickeln eine mobile Applikation schlüsselfertig

IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.

Projekt besprechen

Lesen Sie auch