---
description: Capacitor plugin to configure and observe the iOS audio session. Set the category, mode, and options, route audio output, and listen for interruptions.
title: Capacitor Audio Session Plugin for iOS - Capawesome
image: https://capawesome.io/docs/assets/images/social/sdks/capacitor/audio-session.png
---

<!doctype html> 

[Skip to content ](#capacitor-audio-session-plugin) 

[🔐 Introducing the **Capacitor Vault** plugin — store secrets behind biometrics or a device passcode. ](/blog/announcing-the-capacitor-vault-plugin/) 

* [ SDKs ](/docs/sdks/)
* [ Type Aliases ](#type-aliases)
* [ Session Ownership ](#session-ownership)
* [ Changelog ](#changelog)
* [ License ](#license)
* [ Background Task ](/docs/sdks/capacitor/background-task/)
* [ Badge ](/docs/sdks/capacitor/badge/)
* [ Barometer ](/docs/sdks/capacitor/barometer/)
* [ Battery ](/docs/sdks/capacitor/battery/)
* [ Biometrics ](/docs/sdks/capacitor/biometrics/)
* [ Bluetooth Low Energy ](/docs/sdks/capacitor/bluetooth-low-energy/)
* [ Cloudinary ](/docs/sdks/capacitor/cloudinary/)
* [ Compass ](/docs/sdks/capacitor/compass/)
* [ Contacts ](/docs/sdks/capacitor/contacts/)
* [ Datetime Picker ](/docs/sdks/capacitor/datetime-picker/)
* [ Facebook Sign-In ](/docs/sdks/capacitor/facebook-sign-in/)
* [ File Compressor ](/docs/sdks/capacitor/file-compressor/)
* [ File Opener ](/docs/sdks/capacitor/file-opener/)
* [ File Picker ](/docs/sdks/capacitor/file-picker/)
* [ Firebase ](/docs/sdks/capacitor/firebase/)
* [ Formbricks ](/docs/sdks/capacitor/formbricks/)
* [ Geocoder ](/docs/sdks/capacitor/geocoder/)
* [ Google Sign-In ](/docs/sdks/capacitor/google-sign-in/)
* [ Grafana Faro ](/docs/sdks/capacitor/grafana-faro/)
* [ Gyroscope ](/docs/sdks/capacitor/gyroscope/)
* [ In-App Browser ](/docs/sdks/capacitor/in-app-browser/)
* [ Install Referrer ](/docs/sdks/capacitor/install-referrer/)
* [ Keep Awake ](/docs/sdks/capacitor/keep-awake/)
* [ libSQL ](/docs/sdks/capacitor/libsql/)
* [ Live Update ](/docs/sdks/capacitor/live-update/)
* [ Localization ](/docs/sdks/capacitor/localization/)
* [ Mail Composer ](/docs/sdks/capacitor/mail-composer/)
* [ Managed Configurations ](/docs/sdks/capacitor/managed-configurations/)
* [ Maps Launcher ](/docs/sdks/capacitor/maps-launcher/)
* [ Media Session ](/docs/sdks/capacitor/media-session/)
* [ ML Kit ](/docs/sdks/capacitor/mlkit/)
* [ Navigation Bar ](/docs/sdks/capacitor/navigation-bar/)
* [ NFC ](/docs/sdks/capacitor/nfc/)
* [ Node.js ](/docs/sdks/capacitor/nodejs/)
* [ OAuth ](/docs/sdks/capacitor/oauth/)
* [ Passkeys ](/docs/sdks/capacitor/passkeys/)
* [ Password Autofill ](/docs/sdks/capacitor/password-autofill/)
* [ Pedometer ](/docs/sdks/capacitor/pedometer/)
* [ Photo Editor ](/docs/sdks/capacitor/photo-editor/)
* [ PixLive ](/docs/sdks/capacitor/pixlive/)
* [ PostHog ](/docs/sdks/capacitor/posthog/)
* [ Printer ](/docs/sdks/capacitor/printer/)
* [ Privacy Screen ](/docs/sdks/capacitor/privacy-screen/)
* [ Purchases ](/docs/sdks/capacitor/purchases/)
* [ RealtimeKit ](/docs/sdks/capacitor/realtimekit/)
* [ Root Detection ](/docs/sdks/capacitor/root-detection/)
* [ Screen Brightness ](/docs/sdks/capacitor/screen-brightness/)
* [ Screen Orientation ](/docs/sdks/capacitor/screen-orientation/)
* [ Screenshot ](/docs/sdks/capacitor/screenshot/)
* [ Secure Preferences ](/docs/sdks/capacitor/secure-preferences/)
* [ Shake ](/docs/sdks/capacitor/shake/)
* [ Silent Mode ](/docs/sdks/capacitor/silent-mode/)
* [ SIM ](/docs/sdks/capacitor/sim/)
* [ SMS Composer ](/docs/sdks/capacitor/sms-composer/)
* [ Speech Recognition ](/docs/sdks/capacitor/speech-recognition/)
* [ Speech Synthesis ](/docs/sdks/capacitor/speech-synthesis/)
* [ Share Target ](/docs/sdks/capacitor/share-target/)
* [ Square Mobile Payments ](/docs/sdks/capacitor/square-mobile-payments/)
* [ SQLite ](/docs/sdks/capacitor/sqlite/)
* [ Superwall ](/docs/sdks/capacitor/superwall/)
* [ Thermal State ](/docs/sdks/capacitor/thermal-state/)
* [ Torch ](/docs/sdks/capacitor/torch/)
* [ Vault ](/docs/sdks/capacitor/vault/)
* [ Volume ](/docs/sdks/capacitor/volume/)
* [ Wallet ](/docs/sdks/capacitor/wallet/)
* [ Wifi ](/docs/sdks/capacitor/wifi/)
* [ Zip ](/docs/sdks/capacitor/zip/)
* [ Cordova ](/docs/sdks/cordova/)
* [ Cloud ](/docs/cloud/)
* [ Integrations ](/docs/cloud/live-updates/integrations/)
* Concepts
* Reference
* [ Troubleshooting ](/docs/cloud/live-updates/troubleshooting/)
* [ FAQ ](/docs/cloud/live-updates/faq/)
* [ Native Builds ](/docs/cloud/native-builds/)
* [ Set Up Environments ](/docs/cloud/native-builds/environments/)
* [ Overwrite Native Configurations ](/docs/cloud/native-builds/native-configurations/)
* [ Auto-Increment Build Numbers ](/docs/cloud/native-builds/auto-incrementing-build-numbers/)
* [ Configure the Web Build Script ](/docs/cloud/native-builds/web-build-script/)
* [ Build from a Monorepo ](/docs/cloud/native-builds/monorepo/)
* [ Use pnpm, Yarn, or bun ](/docs/cloud/native-builds/package-managers/)
* [ Install Private npm Packages ](/docs/cloud/native-builds/npm-private-registry/)
* [ Override the Java Version ](/docs/cloud/native-builds/override-java-version/)
* [ Custom iOS Provisioning Profiles ](/docs/cloud/native-builds/custom-ios-provisioning-profiles/)
* [ Build without Git ](/docs/cloud/native-builds/build-without-git/)
* [ Access Git Behind a Firewall ](/docs/cloud/native-builds/firewall-access/)
* [ Integrations ](/docs/cloud/native-builds/integrations/)
* Reference
* [ Troubleshooting ](/docs/cloud/native-builds/troubleshooting/)
* [ FAQ ](/docs/cloud/native-builds/faq/)
* [ App Store Publishing ](/docs/cloud/app-store-publishing/)
* [ Submit a Build ](/docs/cloud/app-store-publishing/submit-a-build/)
* [ Submit Automatically After a Build ](/docs/cloud/app-store-publishing/submit-automatically/)
* [ Troubleshooting ](/docs/cloud/app-store-publishing/troubleshooting/)
* [ FAQ ](/docs/cloud/app-store-publishing/faq/)
* [ Automations ](/docs/cloud/automations/)
* [ Reference ](/docs/cloud/automations/reference/)
* [ Troubleshooting ](/docs/cloud/automations/troubleshooting/)
* [ FAQ ](/docs/cloud/automations/faq/)
* [ Assist ](/docs/cloud/assist/)
* [ CLI ](/docs/cloud/cli/)
* APIs and SDKs
* [ Webhooks ](/docs/cloud/webhooks/)
* [ Integrations ](/docs/cloud/integrations/)
* Account
* [ Organization ](/docs/cloud/organizations/)
* [ Two-Factor Enforcement ](/docs/cloud/organizations/two-factor-authentication/)
* [ Audit Logs ](/docs/cloud/organizations/audit-logs/)
* [ Billing ](/docs/cloud/organizations/billing/)
* [ License Keys ](/docs/cloud/license-keys/)
* [ AI ](/docs/ai/)
* [ Insiders ](/docs/insiders/)
* [ Billing & Plans ](/docs/insiders/billing-and-plans/)
* [ FAQ ](/docs/insiders/faq/)
* [ License ](https://capawesome.io/legal/eula/)
* [ Support ](/docs/support/)
* [ Contributing ](/docs/contributing/)
* Contributing code
* [ Code of Conduct ](/docs/contributing/code-of-conduct/)
* [ Questions ](https://docs.github.com/en/discussions/collaborating-with-your-community-using-discussions/participating-in-a-discussion#creating-a-discussion)
* [ Blog ](/blog/)
* Categories

* [ Type Aliases ](#type-aliases)
* [ Session Ownership ](#session-ownership)
* [ Changelog ](#changelog)
* [ License ](#license)

# Capacitor Audio Session Plugin[¶](#capacitor-audio-session-plugin "Permanent link")

Capacitor plugin to configure and observe the iOS [audio session](https://developer.apple.com/documentation/avfaudio/avaudiosession).

[ ![Deliver Live Updates to your Capacitor app with Capawesome Cloud](../../../assets/external/cloud.capawesome.io/assets/banners/cloud-build-and-deploy-capacitor-apps.69628c3f.png) ](https://cloud.capawesome.io/) 

## Features[¶](#features "Permanent link")

We are proud to offer one of the most complete and feature-rich Capacitor plugins for the iOS audio session. Here are some of the key features:

* 🎛️ **Configuration**: Set the audio session category, mode and options.
* 🔌 **Activation**: Activate and deactivate the audio session.
* 🔊 **Output routing**: Read the current audio outputs and override the output port.
* 📡 **Events**: Observe interruption and route change events.
* 🤝 **Compatibility**: Works alongside the [Audio Player](https://capawesome.io/docs/sdks/capacitor/audio-player/) and [Audio Recorder](https://capawesome.io/docs/sdks/capacitor/audio-recorder/) plugins.
* 📦 **CocoaPods & SPM**: Supports CocoaPods and Swift Package Manager for iOS.
* 🔁 **Up-to-date**: Always supports the latest Capacitor version.

Missing a feature? Just [open an issue](https://github.com/capawesome-team/capacitor-plugins/issues) and we'll take a look!

## Newsletter[¶](#newsletter "Permanent link")

Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/).

## Compatibility[¶](#compatibility "Permanent link")

| Plugin Version | Capacitor Version | Status         |
| -------------- | ----------------- | -------------- |
| 0.x.x          | \>=8.x.x          | Active support |

## Installation[¶](#installation "Permanent link")

You can use our **AI-Assisted Setup** to install the plugin. Add the [Capawesome Skills](https://github.com/capawesome-team/skills) to your AI tool using the following command:

`[](#%5F%5Fcodelineno-0-1)npx skills add capawesome-team/skills --skill capacitor-plugins
`

Then use the following prompt:

`` [](#%5F%5Fcodelineno-1-1) Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-audio-session` plugin in my project.
 ``

If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below:

`[](#%5F%5Fcodelineno-2-1)npm install @capawesome/capacitor-audio-session
[](#%5F%5Fcodelineno-2-2)npx cap sync
`

This plugin is only available on **iOS**. On Android and Web, all methods reject as unimplemented.

## Configuration[¶](#configuration "Permanent link")

No configuration required for this plugin.

## Usage[¶](#usage "Permanent link")

`[](#%5F%5Fcodelineno-3-1)import { AudioSession } from '@capawesome/capacitor-audio-session';
[](#%5F%5Fcodelineno-3-2)
[](#%5F%5Fcodelineno-3-3)const configure = async () => {
[](#%5F%5Fcodelineno-3-4)  await AudioSession.configure({
[](#%5F%5Fcodelineno-3-5)    category: 'playback',
[](#%5F%5Fcodelineno-3-6)    mode: 'moviePlayback',
[](#%5F%5Fcodelineno-3-7)    options: {
[](#%5F%5Fcodelineno-3-8)      mixWithOthers: false,
[](#%5F%5Fcodelineno-3-9)    },
[](#%5F%5Fcodelineno-3-10)  });
[](#%5F%5Fcodelineno-3-11)};
[](#%5F%5Fcodelineno-3-12)
[](#%5F%5Fcodelineno-3-13)const setActive = async () => {
[](#%5F%5Fcodelineno-3-14)  await AudioSession.setActive({ active: true });
[](#%5F%5Fcodelineno-3-15)};
[](#%5F%5Fcodelineno-3-16)
[](#%5F%5Fcodelineno-3-17)const getCurrentOutputs = async () => {
[](#%5F%5Fcodelineno-3-18)  const { outputs } = await AudioSession.getCurrentOutputs();
[](#%5F%5Fcodelineno-3-19)  return outputs;
[](#%5F%5Fcodelineno-3-20)};
[](#%5F%5Fcodelineno-3-21)
[](#%5F%5Fcodelineno-3-22)const overrideOutput = async () => {
[](#%5F%5Fcodelineno-3-23)  await AudioSession.overrideOutput({ type: 'speaker' });
[](#%5F%5Fcodelineno-3-24)};
[](#%5F%5Fcodelineno-3-25)
[](#%5F%5Fcodelineno-3-26)const addInterruptionListener = async () => {
[](#%5F%5Fcodelineno-3-27)  await AudioSession.addListener('interruption', event => {
[](#%5F%5Fcodelineno-3-28)    console.log('Interruption:', event.type, event.shouldResume);
[](#%5F%5Fcodelineno-3-29)  });
[](#%5F%5Fcodelineno-3-30)};
[](#%5F%5Fcodelineno-3-31)
[](#%5F%5Fcodelineno-3-32)const addRouteChangeListener = async () => {
[](#%5F%5Fcodelineno-3-33)  await AudioSession.addListener('routeChange', event => {
[](#%5F%5Fcodelineno-3-34)    console.log('Route change:', event.reason, event.outputs);
[](#%5F%5Fcodelineno-3-35)  });
[](#%5F%5Fcodelineno-3-36)};
[](#%5F%5Fcodelineno-3-37)
[](#%5F%5Fcodelineno-3-38)const removeAllListeners = async () => {
[](#%5F%5Fcodelineno-3-39)  await AudioSession.removeAllListeners();
[](#%5F%5Fcodelineno-3-40)};
`

## API[¶](#api "Permanent link")

* [addListener('interruption', ...)](#addlistenerinterruption-)
* [addListener('routeChange', ...)](#addlistenerroutechange-)
* [configure(...)](#configure)
* [getCurrentOutputs()](#getcurrentoutputs)
* [overrideOutput(...)](#overrideoutput)
* [removeAllListeners()](#removealllisteners)
* [setActive(...)](#setactive)
* [Interfaces](#interfaces)
* [Type Aliases](#type-aliases)

### addListener('interruption', ...)[¶](#addlistenerinterruption "Permanent link")

`[](#%5F%5Fcodelineno-4-1)addListener(eventName: 'interruption', listenerFunc: (event: InterruptionEvent) => void) => Promise<PluginListenerHandle>
`

Called when the audio session is interrupted, e.g. by an incoming phone call.

Only available on iOS.

| Param            | Type                                                     |
| ---------------- | -------------------------------------------------------- |
| **eventName**    | 'interruption'                                           |
| **listenerFunc** | (event: [InterruptionEvent](#interruptionevent)) => void |

**Returns:** `Promise<[PluginListenerHandle](#pluginlistenerhandle)>`

**Since:** 0.1.0

---

### addListener('routeChange', ...)[¶](#addlistenerroutechange "Permanent link")

`[](#%5F%5Fcodelineno-5-1)addListener(eventName: 'routeChange', listenerFunc: (event: RouteChangeEvent) => void) => Promise<PluginListenerHandle>
`

Called when the audio route changes, e.g. when headphones are plugged in or out.

Only available on iOS.

| Param            | Type                                                   |
| ---------------- | ------------------------------------------------------ |
| **eventName**    | 'routeChange'                                          |
| **listenerFunc** | (event: [RouteChangeEvent](#routechangeevent)) => void |

**Returns:** `Promise<[PluginListenerHandle](#pluginlistenerhandle)>`

**Since:** 0.1.0

---

### configure(...)[¶](#configure "Permanent link")

`[](#%5F%5Fcodelineno-6-1)configure(options: ConfigureOptions) => Promise<void>
`

Configure the audio session category, mode and options.

Only available on iOS.

| Param       | Type                                  |
| ----------- | ------------------------------------- |
| **options** | [ConfigureOptions](#configureoptions) |

**Since:** 0.1.0

---

### getCurrentOutputs()[¶](#getcurrentoutputs "Permanent link")

`[](#%5F%5Fcodelineno-7-1)getCurrentOutputs() => Promise<GetCurrentOutputsResult>
`

Get the audio outputs of the current audio route.

Only available on iOS.

**Returns:** `Promise<[GetCurrentOutputsResult](#getcurrentoutputsresult)>`

**Since:** 0.1.0

---

### overrideOutput(...)[¶](#overrideoutput "Permanent link")

`[](#%5F%5Fcodelineno-8-1)overrideOutput(options: OverrideOutputOptions) => Promise<void>
`

Override the audio output port that is used for playback.

Only available on iOS.

| Param       | Type                                            |
| ----------- | ----------------------------------------------- |
| **options** | [OverrideOutputOptions](#overrideoutputoptions) |

**Since:** 0.1.0

---

### removeAllListeners()[¶](#removealllisteners "Permanent link")

`[](#%5F%5Fcodelineno-9-1)removeAllListeners() => Promise<void>
`

Remove all listeners for this plugin.

Only available on iOS.

**Since:** 0.1.0

---

### setActive(...)[¶](#setactive "Permanent link")

`[](#%5F%5Fcodelineno-10-1)setActive(options: SetActiveOptions) => Promise<void>
`

Activate or deactivate the audio session.

Only available on iOS.

| Param       | Type                                  |
| ----------- | ------------------------------------- |
| **options** | [SetActiveOptions](#setactiveoptions) |

**Since:** 0.1.0

---

### Interfaces[¶](#interfaces "Permanent link")

#### PluginListenerHandle[¶](#pluginlistenerhandle "Permanent link")

| Prop       | Type                |
| ---------- | ------------------- |
| **remove** | () => Promise<void> |

#### InterruptionEvent[¶](#interruptionevent "Permanent link")

| Prop             | Type                                  | Description                                                                              | Since |
| ---------------- | ------------------------------------- | ---------------------------------------------------------------------------------------- | ----- |
| **shouldResume** | boolean                               | Whether playback should resume after the interruption ended. Only true if type is ended. | 0.1.0 |
| **type**         | [InterruptionType](#interruptiontype) | The type of the interruption.                                                            | 0.1.0 |

#### RouteChangeEvent[¶](#routechangeevent "Permanent link")

| Prop        | Type                                    | Description                                            | Since |
| ----------- | --------------------------------------- | ------------------------------------------------------ | ----- |
| **outputs** | AudioSessionOutput\[\]                  | The audio outputs of the audio route after the change. | 0.1.0 |
| **reason**  | [RouteChangeReason](#routechangereason) | The reason why the audio route changed.                | 0.1.0 |

#### AudioSessionOutput[¶](#audiosessionoutput "Permanent link")

| Prop         | Type   | Description                                       | Since |
| ------------ | ------ | ------------------------------------------------- | ----- |
| **portName** | string | The human-readable name of the audio output port. | 0.1.0 |
| **portType** | string | The type of the audio output port.                | 0.1.0 |

#### ConfigureOptions[¶](#configureoptions "Permanent link")

| Prop         | Type                                                        | Description                         | Default   | Since |
| ------------ | ----------------------------------------------------------- | ----------------------------------- | --------- | ----- |
| **category** | [AudioSessionCategory](#audiosessioncategory)               | The audio session category.         |           | 0.1.0 |
| **mode**     | [AudioSessionMode](#audiosessionmode)                       | The audio session mode.             | 'default' | 0.1.0 |
| **options**  | [AudioSessionCategoryOptions](#audiosessioncategoryoptions) | The audio session category options. |           | 0.1.0 |

#### AudioSessionCategoryOptions[¶](#audiosessioncategoryoptions "Permanent link")

| Prop                                     | Type    | Description                                                                                                                                | Default | Since |
| ---------------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------ | ------- | ----- |
| **allowAirPlay**                         | boolean | Whether AirPlay devices can be used for output.                                                                                            | false   | 0.1.0 |
| **allowBluetooth**                       | boolean | Whether Bluetooth hands-free devices can be used for input and output.                                                                     | false   | 0.1.0 |
| **allowBluetoothA2DP**                   | boolean | Whether Bluetooth A2DP devices can be used for output.                                                                                     | false   | 0.1.0 |
| **defaultToSpeaker**                     | boolean | Whether audio is routed to the built-in speaker instead of the receiver when no other audio route is connected.                            | false   | 0.1.0 |
| **duckOthers**                           | boolean | Whether audio from other sessions is reduced in volume (ducked) while audio from this session plays.                                       | false   | 0.1.0 |
| **interruptSpokenAudioAndMixWithOthers** | boolean | Whether audio from other sessions using the spokenAudio mode is interrupted and audio from this session is mixed with the remaining audio. | false   | 0.1.0 |
| **mixWithOthers**                        | boolean | Whether audio from this session mixes with audio from other active sessions instead of interrupting them.                                  | false   | 0.1.0 |

#### GetCurrentOutputsResult[¶](#getcurrentoutputsresult "Permanent link")

| Prop        | Type                   | Description                                   | Since |
| ----------- | ---------------------- | --------------------------------------------- | ----- |
| **outputs** | AudioSessionOutput\[\] | The audio outputs of the current audio route. | 0.1.0 |

#### OverrideOutputOptions[¶](#overrideoutputoptions "Permanent link")

| Prop     | Type                                      | Description                                 | Since |
| -------- | ----------------------------------------- | ------------------------------------------- | ----- |
| **type** | [OverrideOutputType](#overrideoutputtype) | The audio output port to route playback to. | 0.1.0 |

#### SetActiveOptions[¶](#setactiveoptions "Permanent link")

| Prop                           | Type    | Description                                                                                              | Default | Since |
| ------------------------------ | ------- | -------------------------------------------------------------------------------------------------------- | ------- | ----- |
| **active**                     | boolean | Whether the audio session should be activated (true) or deactivated (false).                             |         | 0.1.0 |
| **notifyOthersOnDeactivation** | boolean | Whether other audio sessions are notified when this session is deactivated, so they can resume playback. | true    | 0.1.0 |

### Type Aliases[¶](#type-aliases "Permanent link")

#### InterruptionType[¶](#interruptiontype "Permanent link")

The type of an audio session interruption.

`'began' | 'ended'`

#### RouteChangeReason[¶](#routechangereason "Permanent link")

The reason why the audio route changed.

`'categoryChange' | 'newDeviceAvailable' | 'noSuitableRouteForCategory' | 'oldDeviceUnavailable' | 'override' | 'routeConfigurationChange' | 'unknown' | 'wakeFromSleep'`

#### AudioSessionCategory[¶](#audiosessioncategory "Permanent link")

The audio session category.

`'ambient' | 'multiRoute' | 'playAndRecord' | 'playback' | 'record' | 'soloAmbient'`

#### AudioSessionMode[¶](#audiosessionmode "Permanent link")

The audio session mode.

`'default' | 'gameChat' | 'measurement' | 'moviePlayback' | 'spokenAudio' | 'videoChat' | 'videoRecording' | 'voiceChat' | 'voicePrompt'`

#### OverrideOutputType[¶](#overrideoutputtype "Permanent link")

The audio output port to route playback to.

`'default' | 'speaker'`

## Session Ownership[¶](#session-ownership "Permanent link")

The audio session returned by [AVAudioSession.sharedInstance()](https://developer.apple.com/documentation/avfaudio/avaudiosession) is a **single, app-wide** object. This plugin gives you **manual** control over it, but so do other audio-related plugins (such as the [Audio Player](https://capawesome.io/docs/sdks/capacitor/audio-player/), [Audio Recorder](https://capawesome.io/docs/sdks/capacitor/audio-recorder/) and Speech Recognition plugins) and the underlying platform APIs they use.

Because the session is shared, the **last write wins**: calling `configure(...)` may override the category, mode or options that another plugin has set, and vice versa. This plugin cannot prevent that. If you combine this plugin with other audio plugins, make sure to reconfigure the session whenever you switch between playback, recording and other audio scenarios.

## Changelog[¶](#changelog "Permanent link")

See [CHANGELOG.md](https://github.com/capawesome-team/capacitor-plugins/blob/main/packages/audio-session/CHANGELOG.md).

## License[¶](#license "Permanent link")

See [LICENSE](https://github.com/capawesome-team/capacitor-plugins/blob/main/packages/audio-session/LICENSE).

July 7, 2026 

Back to top

```json
{"@context": "https://schema.org", "@graph": [{"@type": "TechArticle", "@id": "https://capawesome.io/docs/sdks/capacitor/audio-session/#article", "headline": "Capacitor Audio Session Plugin for iOS", "name": "Capacitor Audio Session Plugin for iOS", "description": "Capacitor plugin to configure and observe the iOS audio session. Set the category, mode, and options, route audio output, and listen for interruptions.", "inLanguage": "en", "url": "https://capawesome.io/docs/sdks/capacitor/audio-session/", "mainEntityOfPage": "https://capawesome.io/docs/sdks/capacitor/audio-session/", "author": {"@type": "Organization", "name": "Capawesome", "url": "https://capawesome.io", "logo": {"@type": "ImageObject", "url": "https://capawesome.io/assets/images/logo.svg"}}, "publisher": {"@type": "Organization", "name": "Capawesome", "url": "https://capawesome.io", "logo": {"@type": "ImageObject", "url": "https://capawesome.io/assets/images/logo.svg"}}, "about": {"@id": "https://capawesome.io/docs/sdks/capacitor/audio-session/#software"}}, {"@type": "SoftwareSourceCode", "@id": "https://capawesome.io/docs/sdks/capacitor/audio-session/#software", "name": "Capacitor Audio Session Plugin for iOS", "description": "Capacitor plugin to configure and observe the iOS audio session. Set the category, mode, and options, route audio output, and listen for interruptions.", "url": "https://capawesome.io/docs/sdks/capacitor/audio-session/", "programmingLanguage": "TypeScript", "runtimePlatform": "Capacitor", "codeRepository": "https://github.com/capawesome-team", "author": {"@type": "Organization", "name": "Capawesome", "url": "https://capawesome.io", "logo": {"@type": "ImageObject", "url": "https://capawesome.io/assets/images/logo.svg"}}, "publisher": {"@type": "Organization", "name": "Capawesome", "url": "https://capawesome.io", "logo": {"@type": "ImageObject", "url": "https://capawesome.io/assets/images/logo.svg"}}}]}
```
