Michael Burke Michael Burke - 1 year ago 44
iOS Question

In Swift, how do I let other apps continue to play audio when my app is open?

I looked around and found vaguely similar questions but nothing quite the same...I do apologize if I missed the answer somewhere.

I am finishing up a game I wrote in Swift using SpriteKit.

Most other games that I've played, I can have itunes or something playing music in the background, and still hear it while I am playing a game.

As I am playing my game, I'm noticing that it automatically shuts of the audio from other apps.

I am not using

for the sound, as I currently only have a small amount of audio effects so I was just using an SKAction.playsoundfilenamed action instead.

I do have logic in there to turn my sounds on and off, but that is simply using some internal if/else logic.

I'm wondering if perhaps there is some
property I can set that will allow other apps audio to continue playing when mine is open? I can't find this in the documentation.


Answer Source

Set your AVAudioSession category to Ambient.

import AVFoundation.AVAudioSession

AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryAmbient, error: nil)

This category is also appropriate for “play along” style apps, such as a virtual piano that a user plays while the Music app is playing. When you use this category, audio from other apps mixes with your audio. Your audio is silenced by screen locking and by the Silent switch (called the Ring/Silent switch on iPhone).