AVAudioSession.requestRecordPermission未显示对话框

Rid*_*ous 4 ios avaudiosession ios9

我正在尝试在我继承的项目中录制音频.所有以前都工作正常,直到iOS 9.现在看来requestRecordPermission在没有显示对话框的情况下调用它的块为false.当我检查当前权限时,在请求它之前,我总是得到Undetermined.即使在后续运行的应用程序没有重置.

我正在测试实际设备,并且每次都重置权限(设置 - >常规 - >重置 - >重置位置和隐私).此外,我的应用程序没有显示在settings-> privacy->麦克风中,但确实显示在常规应用程序的列表中,在那里我可以看到它使用的其他权限但没有麦克风.

是否有一些可以影响它的项目设置?似乎操作系统不理解我要求权限,因此没有对话框和权限中没有列表.

码:

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;
}
Run Code Online (Sandbox Code Playgroud)

这是在AppDelegate.applicationDidFinishLaunchingWithOptions中.在每次运行时(首先在重置之后以及随后的运行),第一次检查返回未确定,然后requestRecordPermission使用granted = false调用它的块而不显示对话框.

小智 9

在"Info.plist"中设置"Bundle display name"(基本上是应用程序的名称)将解决问题.