iPhone Detect Keys de volumen presione.

Necesito detectar cuándo el usuario presiona las teclas de volumen del hardware (enfoque seguro de App Store). He intentado varias cosas sin suerte. ¿Sabes cómo implementar tal funcionalidad? En este momento me estoy inscribiendo para recibir notifications, pero parece que no me llaman. Aquí está mi código:

AudioSessionInitialize(NULL, NULL, NULL, NULL); NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter]; [notificationCenter addObserver:self selector:@selector(volumeChanged:) name:@"AVSystemController_SystemVolumeDidChangeNotification" object:nil]; 

Y el método del receptor es:

 -(void)volumeChanged:(NSNotification *)notification{ NSLog(@"YAY, VOLUME WAS CHANGED");} 

Algún consejo sería de gran aprecio.

Debe iniciar una session de audio antes de que se active la notificación:

 AudioSessionInitialize(NULL, NULL, NULL, NULL); AudioSessionSetActive(true); 

Ahora puede suscribirse a la notificación:

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(volumeChanged:) name:@"AVSystemController_SystemVolumeDidChangeNotification" object:nil]; 

Para get el volumen:

 float volume = [[[notification userInfo] objectForKey:@"AVSystemController_AudioVolumeNotificationParameter"] floatValue]; 

Deberá almacenar el volumen y compararlo con el valor anterior que obtuvo de una notificación para saber qué button se presionó.

Esta solución aún ajustará el volumen del sistema cuando el usuario presiona la tecla de volumen y muestra la superposition de volumen. Si desea evitar cambiar el volumen del sistema y mostrar la superposition (en esencia, reutilice completamente las teclas de volumen), consulte esta respuesta