Changing AVAudioSession on hardware volume button press

I'm looking to implement something fairly similar to instagram, where the app will switch to a .playback AVAudioSession when the user interacts with the hardware volume button.

Observing the outputVolume of the AVAudioSession works for most cases except for where the user presses hardware volume up at max volume (or vice versa, but that's less of an issue), as the volume doesn't actually change.

I can implement this functionality by observing AVSystemController_SystemVolumeDidChangeNotification but given that this is a private API I'd be risking the wrath of the app store review process which is something I'd like to avoid.

Is there an approach I've missed which could work for me here? What are instagram's secrets?
Changing AVAudioSession on hardware volume button press
 
 
Q