我正在尝试在我继承的项目中录制音频。所有以前都工作正常,直到iOS 9.现在看来requestRecordPermission调用它的块为false而不显示对话框。当我检查当前权限时,在请求它之前,我总是得到Undetermined。即使在没有重置的应用程序的后续运行中也是如此。
我正在测试实际设备,并且每次都重置权限(设置 - > general-> reset->重置位置和隐私)。 此外,我的应用程序没有显示在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;
}
这是在AppDelegate.applicationDidFinishLaunchingWithOptions中。在每次运行时(首先在重置之后以及随后的运行),第一次检查返回未确定,然后requestRecordPermission调用它的块,其值为granted = false而不显示对话框。
答案 0 :(得分:8)
在“Info.plist”中设置“Bundle display name”(基本上是您的应用程序的名称)将解决问题。
答案 1 :(得分:0)
如in the doc here所述,即使用户为Guitz于2015年提议的“捆绑包显示名称”设置了,一旦用户为某个应用做出决定,该值就将是静态的。
只有用户可以重置此决定:
提示 当用户响应您应用程序的录制权限提示时,系统会记住该选择。如果用户拒绝了录音权限,他们可以在“设置”>“隐私”>“麦克风”中重新启用它。
我已经实现了一条消息,要求用户在尝试录制时打开设置中的麦克风,并且该应用的权限被拒绝。