requestRecordPermission no hace nada

Desde la actualización de iOS 7, ha habido algunos cambios con las aplicaciones de grabación. Tengo una aplicación que solía funcionar con iOS 5 y 6, pero cuando traté de ejecutarlo en iOS 7, la grabación no respondió.

Revisé el Internet y vi que hay un nuevo método que se debe llamar. Intenté ubicar este código en viewDidAppear:

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) { if([[AVAudioSession shanetworkingInstance] respondsToSelector:@selector(requestRecordPermission:)]) { [[AVAudioSession shanetworkingInstance] requestRecordPermission:^(BOOL granted) { NSLog(@"permission : %d", granted); }]; } } 

'granted' siempre es 1, aunque no concedí ningún permiso ni vi ningún post emergente de request.

Por cierto, estoy tratando de manejar esto usando xcode 4.6.3. Hice una categoría para AVAudioSession con el método requestRecordPermission, ya que este método solo está disponible en iOS 7.

Gracias.

Me encontré con el mismo problema mientras probaba el simulador de iOS7, parece que requestRecordPermission no funciona en el simulador y "granted" siempre se devuelve YES. Tienes que probarlo en un dispositivo real.

Si lo ha probado una vez en un dispositivo y respondió a la window emergente de permiso, la window emergente de permiso no volverá a aparecer hasta que se haya restablecido la location y la privacidad.

Para restablecer la location y la privacidad, siga estos pasos

 Go to Settings -> General -> Reset -> Reset Location & Privacy and then press "Reset Warnings" when asked. 

Una vez que dio permiso de audio a la aplicación. Su aplicación no mostrará el aviso de permiso nuevamente.

Si quieres probarlo, cambia el ID del package de tu aplicación y testing.

Lo mismo para iOS 8 Simulator. AVAudioSession.shanetworkingInstance().requestRecordPermission siempre devuelve true.On el otro lado cuando llama

 UIApplication.shanetworkingApplication().openURL(NSURL(string: UIApplicationOpenSettingsURLString)!) 

para abrir la configuration de su aplicación en el simulador, el micrófono nunca aparece allí. Eso debería probarse en un dispositivo real.

Agregue privacidad: descripción de uso de micrófono en su plist de información para dar acceso a la aplicación para solicitar permissions. Esto me estaba causando Thread13: señal de error SIGABRT. Una vez hecho esto, el error se resuelve automáticamente.