I'm trying to record audio in a project I inherited. All used to work fine, until iOS 9. It seems now requestRecordPermission calls it's block with false without displaying a dialog. When I check for the current permission, before requesting it, I always get Undetermined. Even on subsequent runs of the app without a reset.
I'm testing on an actual device, and resetting the permissions (settings->general->reset->reset location and privacy) each time. Also my app does not show in settings->privacy->microphone, but does show in the general app's list, where I can see the other permissions it uses but no microphone.
Is there some project setting that can affect it? It seems like the os does not understand that I ask for the permission, hence no dialog and no listing in the permissions.
code:
AVAudioSessionRecordPermission permissionStatus = [[AVAudioSession sharedInstance] recordPermission];
switch (permissionStatus) {
case AVAudioSessionRecordPermissionUndetermined:
[[AVAudioSession sharedInstance] requestRecordPermission:^(BOOL granted) {
if (granted) {
NSLog(@"req granted");
}
else {
NSLog(@"req denied");
}
}];
break;
case AVAudioSessionRecordPermissionDenied:
NSLog(@"denied");
break;
case AVAudioSessionRecordPermissionGranted:
NSLog(@"granted");
break;
default:
break;
}
this is in AppDelegate.applicationDidFinishLaunchingWithOptions. On every run (first after reset as well as subsequent), the first check returns undetermined, and then requestRecordPermission calls it's block with granted=false without displaying a dialog.
Setting the "Bundle display name" (basically the name of your app) in the "Info.plist" will fix the problem.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With