Cómo detectar si el micrófono está disponible en el dispositivo (iPhone / iPad) – Objetivo C

En mi aplicación de iOS , quiero mostrar una Alert , si el Mic is not available in the device .

¿Cómo puedo verificar esto?

He intentado esto,

  -(void)checkMic { UInt32 sessionCategory = kAudioSessionCategory_RecordAudio; OSStatus status = AudioSessionSetProperty (kAudioSessionProperty_AudioCategory, sizeof (sessionCategory), &sessionCategory); //..always seems to return OK.. status = AudioSessionSetActive (true); if(status) { //mic is not available } } 

Pero este código muestra un error con post desaprobado.

AudioSessionSetProperty y AudioSessionGetProperty están en desuso a partir de iOS 7. Use AVAudioSession en AVAudioSession lugar.

Puede usar su propiedad availableInputs para get una list de lo que está disponible e iterar a través de ellos para encontrar uno que se parezca a un micrófono, así:

 NSArray *availableInputs = [[AVAudioSession shanetworkingInstance] availableInputs]; BOOL micPresent = false; for (AVAudioSessionPortDescription *port in availableInputs) { if ([port.portType isEqualToString:AVAudioSessionPortBuiltInMic] || [port.portType isEqualToString:AVAudioSessionPortHeadsetMic]) { micPresent = true; } } if (micPresent) { // Do something cool } else { // No mic present - show alert } 

De forma alternativa, si solo desea una input, y no le importa si es un micrófono o una línea de input, puede hacer lo siguiente:

 if ([[AVAudioSession shanetworkingInstance] inputAvailable]; { // Do something cool } else { // No input present - show alert }