AVAudioSession.requestRecordPermission 不显示对话框
AVAudioSession.requestRecordPermission not showing dialog
我正在尝试在我继承的项目中录制音频。所有过去都工作正常,直到 iOS 9。现在 requestRecordPermission 似乎用 false 调用它的块而不显示对话框。当我检查当前权限时,在请求它之前,我总是得到 Undetermined。即使在随后 运行 的应用程序中没有重置。
我正在实际设备上进行测试,并且每次都重置权限(设置->常规->重置->重置位置和隐私)。
我的应用程序也没有显示在设置->隐私->麦克风中,但确实显示在一般应用程序的列表中,我可以在其中看到它使用的其他权限,但没有麦克风。
是否有一些项目设置可以影响它? os 似乎不理解我请求的权限,因此没有对话框,也没有在权限中列出。
代码:
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。在每个 运行 上(首先在重置后以及随后),第一个检查 returns 未确定,然后 requestRecordPermission 使用 granted=false 调用它的块而不显示对话框。
在 "Info.plist" 中设置 "Bundle display name"(基本上是您应用的名称)将解决问题。
如前所述in the doc here,一旦用户决定使用某个应用,此值将是静态的,即使您已按照 Guitz 在 2015 年提议的 "Bundle display name" 设置。
只有用户可以重置此决定:
Tip
When a user responds to a recording permission prompt for your app, the system remembers the choice. If the user has denied recording permission, they can reenable it in Settings > Privacy > Microphone.
我已经实现了一条消息,让用户在尝试录制时在设置中打开麦克风,但该应用的权限被拒绝。
我正在尝试在我继承的项目中录制音频。所有过去都工作正常,直到 iOS 9。现在 requestRecordPermission 似乎用 false 调用它的块而不显示对话框。当我检查当前权限时,在请求它之前,我总是得到 Undetermined。即使在随后 运行 的应用程序中没有重置。
我正在实际设备上进行测试,并且每次都重置权限(设置->常规->重置->重置位置和隐私)。 我的应用程序也没有显示在设置->隐私->麦克风中,但确实显示在一般应用程序的列表中,我可以在其中看到它使用的其他权限,但没有麦克风。
是否有一些项目设置可以影响它? os 似乎不理解我请求的权限,因此没有对话框,也没有在权限中列出。
代码:
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。在每个 运行 上(首先在重置后以及随后),第一个检查 returns 未确定,然后 requestRecordPermission 使用 granted=false 调用它的块而不显示对话框。
在 "Info.plist" 中设置 "Bundle display name"(基本上是您应用的名称)将解决问题。
如前所述in the doc here,一旦用户决定使用某个应用,此值将是静态的,即使您已按照 Guitz 在 2015 年提议的 "Bundle display name" 设置。
只有用户可以重置此决定:
Tip When a user responds to a recording permission prompt for your app, the system remembers the choice. If the user has denied recording permission, they can reenable it in Settings > Privacy > Microphone.
我已经实现了一条消息,让用户在尝试录制时在设置中打开麦克风,但该应用的权限被拒绝。