Audio ducking on iOS

Hi there,

I’ve been trying to implement audio ducking (when I play audio in my Unity app I want other sounds the device is playing, such as music, to lower in volume until my audio is done playing) in iOS for the past days but without any luck. The same task took around an hour on Android but iOS is more tricky. Here’s what I was (unsuccessfully) using, this is in a .m file (objective-c)/plugin:

#import <AVFoundation/AVAudioSession.h>

void AudioDuckOn( )
{
    [[AVAudioSession sharedInstance] setActive:NO error:nil];
    [[AVAudioSession sharedInstance]
        setCategory: AVAudioSessionCategoryAmbient
        withOptions: AVAudioSessionCategoryOptionDuckOthers
        error: nil
    ];
    [[AVAudioSession sharedInstance] setActive:YES error:nil];
}

void AudioDuckOff( )
{
    [[AVAudioSession sharedInstance] 
        setActive:NO 
        withOptions:AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation 
        error:nil
    ];
    [[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryAmbient error: nil];
    [[AVAudioSession sharedInstance] setActive:YES error:nil];
}

I called AudioDuckOn and AudioDuckOff from within a sound manager in Unity but it had no effect. I’m wondering if AVAudioSession sharedInstance is not the instance I’m looking for… but I do not know what I should be looking for instead. Any help would be appreciated.

Did you find an answer to this?