0

I have an app that can take photos and movies using an UIImagePickerController.
I have set NSCameraUsageDescription in Info.plist (actually, localized in InfoPlist.strings).

When the app was launched and I tried to take a photo, I was asked for permission, which I granted. Now, I can take photos without problems.

However, when I try to take a movie, the app crashes always due to a privacy violation (see stack trace below). This crash happens sometimes before the camera interface is presented, and sometime afterwards (see screenshot below).

I don’t think it has anything to do with the way I present the camera interface, but here is the code anyway:

+ (void)takePhotoOrMovie:(CFStringRef)mediaType inViewController:(UIViewController <UINavigationControllerDelegate, UIImagePickerControllerDelegate> *)viewController 
{
    UIImagePickerController *takePhotoOrMovieController = [[UIImagePickerController alloc] init];
    takePhotoOrMovieController.sourceType = UIImagePickerControllerSourceTypeCamera;
    NSString *mediaTypePhotoOrMovie = (__bridge NSString *)mediaType;
    takePhotoOrMovieController.mediaTypes = @[mediaTypePhotoOrMovie];
    takePhotoOrMovieController.allowsEditing = YES; // Enables the controls for editing
    takePhotoOrMovieController.delegate = viewController;
    [viewController presentViewController:takePhotoOrMovieController animated:YES completion:nil];
}

The parameter mediaType is kUTTypeImage for photo and kUTTypeMovie for movie.

Any idea what is wrong and how to correct it?

enter image description here enter image description here

Lennart
  • 9,657
  • 16
  • 68
  • 84
Reinhard Männer
  • 14,022
  • 5
  • 54
  • 116

1 Answers1

3

You need to provide a NSMicrophoneUsageDescription key also.

Léo Natan
  • 56,823
  • 9
  • 150
  • 195