---
title: AVAudioSession
framework: avfaudio
role: symbol
role_heading: Class
path: avfaudio/avaudiosession
---

# AVAudioSession

An object that communicates to the system how you intend to use audio in your app.

## Declaration

```swift
class AVAudioSession
```

## Mentioned in

Handling audio interruptions Responding to audio route changes

## Overview

Overview An audio session acts as an intermediary between your app and the operating system — and, in turn, the underlying audio hardware. You use an audio session to communicate to the operating system the general nature of your app’s audio without detailing the specific behavior or required interactions with the audio hardware. You delegate the management of those details to the audio session, which ensures that the operating system can best manage the user’s audio experience. All iOS, tvOS, and watchOS apps have a default audio session that comes preconfigured with the following behavior: It supports audio playback, but disallows audio recording. When the app plays audio, it silences any other background audio. In iOS, setting the Ring/Silent switch to silent mode silences any audio the app is playing. In iOS, locking a device silences the app’s audio. Although the default audio session provides useful behavior, it generally doesn’t provide the audio behavior a media app needs. To change the default behavior, you configure your app’s audio session category. There are six possible categories you can use, but playback is the one that playback apps most commonly use. This category indicates that audio playback is a central feature of your app. When you specify this category, your app’s audio continues with the Ring/Silent switch set to silent mode (iOS only). Using this category, you can also play background audio if you’re using the Audio, AirPlay, and Picture in Picture background mode. For more information, see Enabling Background Audio. You use an AVAudioSession object to configure your app’s audio session. This class is a singleton object used to set the audio session’s category, mode, and other configurations. You can interact with the audio session throughout your app’s life cycle, but it’s often useful to perform this configuration at app launch, as shown in the following example. func configureAudioSession() {     // Retrieve the shared audio session.     let audioSession = AVAudioSession.sharedInstance()     do {         // Set the audio session category and mode.         try audioSession.setCategory(.playback, mode: .moviePlayback)     } catch {         print("Failed to set the audio session configuration")     } } The audio session uses this configuration when you activate the session using the setActive:error: or setActive(_:options:) method. note: You can activate the audio session at any time after setting its category, but it’s generally preferable to defer this call until your app begins audio playback. Deferring the call ensures that you won’t prematurely interrupt any other background audio that may be in progress.

## Topics

### Accessing the shared audio session

- [sharedInstance()](avfaudio/avaudiosession/sharedinstance().md)

### Configuring standard audio behaviors

- [setCategory(_:mode:policy:options:)](avfaudio/avaudiosession/setcategory(_:mode:policy:options:).md)
- [setCategory(_:mode:options:)](avfaudio/avaudiosession/setcategory(_:mode:options:).md)
- [setCategory(_:options:)](avfaudio/avaudiosession/setcategory(_:options:).md)
- [setCategory(_:)](avfaudio/avaudiosession/setcategory(_:).md)
- [setMode(_:)](avfaudio/avaudiosession/setmode(_:).md)

### Configuring the spatial experience in visionOS

- [intendedSpatialExperience](avfaudio/avaudiosession/intendedspatialexperience-1bpnq.md)
- [setIntendedSpatialExperience(_:)](avfaudio/avaudiosession/setintendedspatialexperience(_:).md)
- [AVAudioSessionSpatialExperience](avfaudio/avaudiosessionspatialexperience-swift.protocol.md)
- [isNowPlayingCandidate](avfaudio/avaudiosession/isnowplayingcandidate.md)
- [setIsNowPlayingCandidate(_:)](avfaudio/avaudiosession/setisnowplayingcandidate(_:).md)

### Activating the audio configuration

- [setActive(_:options:)](avfaudio/avaudiosession/setactive(_:options:).md)
- [activate(options:completionHandler:)](avfaudio/avaudiosession/activate(options:completionhandler:).md)
- [deactivate(options:completionHandler:)](avfaudio/avaudiosession/deactivate(options:completionhandler:).md)
- [AVAudioSessionActivationOptions](avfaudio/avaudiosessionactivationoptions.md)
- [AVAudioSessionDeactivationOptions](avfaudio/avaudiosessiondeactivationoptions.md)

### Observing activation lifecycle

- [didBecomeActiveNotification](avfaudio/avaudiosession/didbecomeactivenotification.md)
- [didBecomeInactiveNotification](avfaudio/avaudiosession/didbecomeinactivenotification.md)
- [resumptionRecommendationNotification](avfaudio/avaudiosession/resumptionrecommendationnotification.md)
- [deactivationContextKey](avfaudio/avaudiosession/deactivationcontextkey.md)
- [resumptionContextKey](avfaudio/avaudiosession/resumptioncontextkey.md)
- [AVAudioSession.DidBecomeActiveMessage](avfaudio/avaudiosession/didbecomeactivemessage.md)
- [AVAudioSession.DidBecomeInactiveMessage](avfaudio/avaudiosession/didbecomeinactivemessage.md)
- [AVAudioSession.ResumptionRecommendationMessage](avfaudio/avaudiosession/resumptionrecommendationmessage.md)
- [AVAudioSession.DeactivationResult](avfaudio/avaudiosession/deactivationresult.md)
- [AVAudioSession.DeactivationContext](avfaudio/avaudiosession/deactivationcontext.md)
- [AVAudioSession.DeactivationSource](avfaudio/avaudiosession/deactivationsource.md)
- [AVAudioSession.InterruptionContext](avfaudio/avaudiosession/interruptioncontext.md)
- [AVAudioSession.ResumptionContext](avfaudio/avaudiosession/resumptioncontext.md)
- [AVAudioSession.ResumptionRecommendation](avfaudio/avaudiosession/resumptionrecommendation.md)

### Inspecting the category configuration

- [category](avfaudio/avaudiosession/category-swift.property.md)
- [availableCategories](avfaudio/avaudiosession/availablecategories.md)
- [AVAudioSession.Category](avfaudio/avaudiosession/category-swift.struct.md)
- [categoryOptions](avfaudio/avaudiosession/categoryoptions-swift.property.md)
- [AVAudioSession.CategoryOptions](avfaudio/avaudiosession/categoryoptions-swift.struct.md)
- [farFieldInput](avfaudio/avaudiosession/categoryoptions-swift.struct/farfieldinput.md)

### Inspecting mode configuration

- [mode](avfaudio/avaudiosession/mode-swift.property.md)
- [availableModes](avfaudio/avaudiosession/availablemodes.md)
- [AVAudioSession.Mode](avfaudio/avaudiosession/mode-swift.struct.md)

### Inspecting rendering mode and capabilities

- [renderingMode](avfaudio/avaudiosession/renderingmode-swift.property.md)
- [AVAudioSession.RenderingMode](avfaudio/avaudiosession/renderingmode-swift.enum.md)
- [renderingModeChangeNotification](avfaudio/avaudiosession/renderingmodechangenotification.md)
- [supportedOutputChannelLayouts](avfaudio/avaudiosession/supportedoutputchannellayouts.md)
- [renderingCapabilitiesChangeNotification](avfaudio/avaudiosession/renderingcapabilitieschangenotification.md)

### Inspecting the route sharing policy

- [routeSharingPolicy](avfaudio/avaudiosession/routesharingpolicy-swift.property.md)
- [AVAudioSession.RouteSharingPolicy](avfaudio/avaudiosession/routesharingpolicy-swift.enum.md)

### Mixing with other audio

- [isOtherAudioPlaying](avfaudio/avaudiosession/isotheraudioplaying.md)
- [secondaryAudioShouldBeSilencedHint](avfaudio/avaudiosession/secondaryaudioshouldbesilencedhint.md)
- [silenceSecondaryAudioHintNotification](avfaudio/avaudiosession/silencesecondaryaudiohintnotification.md)
- [allowHapticsAndSystemSoundsDuringRecording](avfaudio/avaudiosession/allowhapticsandsystemsoundsduringrecording.md)
- [setAllowHapticsAndSystemSoundsDuringRecording(_:)](avfaudio/avaudiosession/setallowhapticsandsystemsoundsduringrecording(_:).md)

### Managing audio routing

- [Audio routing](avfaudio/audio-routing.md)

### Preparing for long-form video playback

- [prepareRouteSelectionForPlayback(completionHandler:)](avfaudio/avaudiosession/preparerouteselectionforplayback(completionhandler:).md)
- [AVAudioSession.RouteSelection](avfaudio/avaudiosession/routeselection.md)

### Handling interruptions

- [prefersNoInterruptionsFromSystemAlerts](avfaudio/avaudiosession/prefersnointerruptionsfromsystemalerts.md)
- [setPrefersNoInterruptionsFromSystemAlerts(_:)](avfaudio/avaudiosession/setprefersnointerruptionsfromsystemalerts(_:).md)
- [prefersInterruptionOnRouteDisconnect](avfaudio/avaudiosession/prefersinterruptiononroutedisconnect.md)
- [setPrefersInterruptionOnRouteDisconnect(_:)](avfaudio/avaudiosession/setprefersinterruptiononroutedisconnect(_:).md)
- [interruptionNotification](avfaudio/avaudiosession/interruptionnotification.md)

### Monitoring spatial capabilities

- [spatialPlaybackCapabilitiesChangedNotification](avfaudio/avaudiosession/spatialplaybackcapabilitieschangednotification.md)

### Inspecting the audio prompt style

- [promptStyle](avfaudio/avaudiosession/promptstyle-swift.property.md)
- [AVAudioSession.PromptStyle](avfaudio/avaudiosession/promptstyle-swift.enum.md)

### Enabling stereo recording

- [inputOrientation](avfaudio/avaudiosession/inputorientation.md)
- [preferredInputOrientation](avfaudio/avaudiosession/preferredinputorientation.md)
- [setPreferredInputOrientation(_:)](avfaudio/avaudiosession/setpreferredinputorientation(_:).md)
- [AVAudioSession.StereoOrientation](avfaudio/avaudiosession/stereoorientation.md)

### Enabling adding audio to calls

- [isMicrophoneInjectionAvailable](avfaudio/avaudiosession/ismicrophoneinjectionavailable.md)
- [preferredMicrophoneInjectionMode](avfaudio/avaudiosession/preferredmicrophoneinjectionmode.md)
- [setPreferredMicrophoneInjectionMode(_:)](avfaudio/avaudiosession/setpreferredmicrophoneinjectionmode(_:).md)
- [AVAudioSession.MicrophoneInjectionMode](avfaudio/avaudiosession/microphoneinjectionmode.md)
- [microphoneInjectionCapabilitiesChangeNotification](avfaudio/avaudiosession/microphoneinjectioncapabilitieschangenotification.md)

### Configuring echo cancellation

- [isEchoCancelledInputAvailable](avfaudio/avaudiosession/isechocancelledinputavailable.md)
- [isEchoCancelledInputEnabled](avfaudio/avaudiosession/isechocancelledinputenabled.md)
- [setPrefersEchoCancelledInput(_:)](avfaudio/avaudiosession/setprefersechocancelledinput(_:).md)
- [prefersEchoCancelledInput](avfaudio/avaudiosession/prefersechocancelledinput.md)

### Configuring audio muting

- [isOutputMuted](avfaudio/avaudiosession/isoutputmuted.md)
- [setOutputMuted(_:)](avfaudio/avaudiosession/setoutputmuted(_:).md)
- [outputMuteStateChangeNotification](avfaudio/avaudiosession/outputmutestatechangenotification.md)
- [muteStateKey](avfaudio/avaudiosession/mutestatekey.md)
- [userIntentToUnmuteOutputNotification](avfaudio/avaudiosession/userintenttounmuteoutputnotification.md)
- [userIntentToUnmuteOutputNotification](avfaudio/avaudiosession/userintenttounmuteoutputnotification.md)
- [muteStateKey](avfaudio/avaudiosession/mutestatekey.md)

### Configuring device settings

- [Audio hardware](avfaudio/audio-hardware.md)

### Setting the aggregated I/O preference

- [setAggregatedIOPreference(_:)](avfaudio/avaudiosession/setaggregatediopreference(_:).md)
- [AVAudioSession.IOType](avfaudio/avaudiosession/iotype.md)

### Handling a change of media services

- [mediaServicesWereResetNotification](avfaudio/avaudiosession/mediaserviceswereresetnotification.md)
- [mediaServicesWereLostNotification](avfaudio/avaudiosession/mediaserviceswerelostnotification.md)

### Errors

- [AVAudioSession.ErrorCode](coreaudiotypes/avaudiosession/errorcode.md)

### Deprecated

- [Deprecated Symbols](avfaudio/deprecated-symbols.md)

### Structures

- [AVAudioSession.BypassedSpatialExperience](avfaudio/avaudiosession/bypassedspatialexperience.md)
- [AVAudioSession.FixedSpatialExperience](avfaudio/avaudiosession/fixedspatialexperience.md)
- [AVAudioSession.HeadTrackedSpatialExperience](avfaudio/avaudiosession/headtrackedspatialexperience.md)

### Enumerations

- [AVAudioSession.AnchoringStrategy](avfaudio/avaudiosession/anchoringstrategy.md)

## Relationships

### Inherits From

- [NSObject](objectivec/nsobject-swift.class.md)

### Conforms To

- [CVarArg](swift/cvararg.md)
- [CustomDebugStringConvertible](swift/customdebugstringconvertible.md)
- [CustomStringConvertible](swift/customstringconvertible.md)
- [Equatable](swift/equatable.md)
- [Hashable](swift/hashable.md)
- [NSObjectProtocol](objectivec/nsobjectprotocol.md)
- [Sendable](swift/sendable.md)
- [SendableMetatype](swift/sendablemetatype.md)

## See Also

### System audio

- [Handling audio interruptions](avfaudio/handling-audio-interruptions.md)
- [Responding to audio route changes](avfaudio/responding-to-audio-route-changes.md)
- [Routing audio to specific devices in multidevice sessions](avfaudio/routing-audio-to-specific-devices-in-multidevice-sessions.md)
- [Adding synthesized speech to calls](avfaudio/adding-synthesized-speech-to-calls.md)
- [Capturing stereo audio from built-In microphones](avfaudio/capturing-stereo-audio-from-built-in-microphones.md)
- [AVAudioApplication](avfaudio/avaudioapplication.md)
- [AVAudioRoutingArbiter](avfaudio/avaudioroutingarbiter.md)
