• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Quick sanity check for iOS AVAudioSession
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Quick sanity check for iOS AVAudioSession


  • Subject: Quick sanity check for iOS AVAudioSession
  • From: "Eric E. Dolecki" <email@hidden>
  • Date: Thu, 29 Nov 2018 09:22:15 -0500

Hey all,

I have an application I am developing and I cannot currently build to a
device. So I am asking in lieu of proper testing on my end at the moment.

1. I would like to mix my audio with that in another session (say Apple
Music is playing something). So before I play my app audio, I call this:

func activateAudioSession()

{

    let session = AVAudioSession.sharedInstance()

    do {

        try session.setCategory(AVAudioSessionCategoryPlayback , with: [.
duckOthers, .allowBluetoothA2DP])

        try session.setActive(true)

    } catch {

        print("Activate session error: \(error)")

    }

}

When my audio has completed playing, I call this (in all cases):

func deactivateAudioSession()

{

    let session = AVAudioSession.sharedInstance()

    // Do this on a separate thread because on UI thread causes 500ms
delay. This unducks others after being ducked.

    DispatchQueue.global().async {

        do {

            try session.setActive(false)

        } catch {

            print("Deactivate session error: \(error)")

        }

    }

}

2. There might be a time when I want to stomp on any audio from another
session. In that case, I have another method I call that does NOT contain
the .duckOthers option which I take to mean that mix with others is not
enabled.

func activateAudioSessionWithStompingOthers()

{

    let session = AVAudioSession.sharedInstance()

    do {

        try session.setCategory(AVAudioSessionCategoryPlayback , with: [.
allowBluetoothA2DP])

        try session.setActive(true)

    } catch {

        print("Activate session error: \(error)")

    }

}

Does this seem about right?

Also - if I stomp on another session (again, say Apple Music), that session
pauses. Once that's done the user would need to manually unpause it - there
is nothing I can do programmatically to get that going again, correct?

Thanks for your attention,

Eric
_______________________________________________

Cocoa-dev mailing list (email@hidden)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden

  • Follow-Ups:
    • Re: Quick sanity check for iOS AVAudioSession
      • From: Quincey Morris <email@hidden>
  • Prev by Date: viewDidLoad is OK, IOReturn isn't
  • Next by Date: Re: Quick sanity check for iOS AVAudioSession
  • Previous by thread: viewDidLoad is OK, IOReturn isn't
  • Next by thread: Re: Quick sanity check for iOS AVAudioSession
  • Index(es):
    • Date
    • Thread