13

自 iOS 7 更新以来,录音应用程序发生了一些变化。我有一个曾经在 iOS 5 和 6 上运行的应用程序,但是当我尝试在 iOS 7 上运行它时 - 录制没有响应。

我检查了互联网,发现有一种新方法需要调用。我试图将此代码放在 viewDidAppear 中:

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
    if([[AVAudioSession sharedInstance] respondsToSelector:@selector(requestRecordPermission:)])
    {
        [[AVAudioSession sharedInstance] requestRecordPermission:^(BOOL granted) {
            NSLog(@"permission : %d", granted);
        }];
    }
}

'granted' 始终为 1,尽管我没有授予任何权限,也没有看到任何请求弹出窗口。

顺便说一句,我正在尝试使用 xcode 4.6.3 来处理这个问题。我使用 requestRecordPermission 方法为 AVAudioSession 创建了一个类别,因为此方法仅在 iOS 7 中可用。

谢谢。

4

4 回答 4

25

我在 iOS7 模拟器上测试时遇到了同样的问题,看起来 requestRecordPermission 在模拟器中不起作用,并且“授予”总是返回 YES。您必须在真实设备上对其进行测试。

如果您在设备上测试过一次并响应了权限弹出窗口,那么权限弹出窗口将不会再次出现,直到完成位置和隐私的重置。

要重置位置和隐私,请按照以下步骤操作

Go to Settings -> General -> Reset -> Reset Location & Privacy and then press "Reset Warnings" when asked.
于 2013-10-16T07:31:42.067 回答
10

一旦您向应用程序授予了音频权限。您的应用将不再显示权限提示。

如果您想测试它,请更改应用程序的捆绑 ID 并尝试。

于 2013-10-07T13:14:36.710 回答
2

同样适用于 iOS 8 模拟器。AVAudioSession.sharedInstance().requestRecordPermission总是返回 true。另一方面,当你打电话时

UIApplication.sharedApplication().openURL(NSURL(string: UIApplicationOpenSettingsURLString)!) 

要在模拟器上打开应用程序的设置,那里永远不会列出麦克风。这需要在真实设备上进行测试。

于 2015-07-22T20:25:42.000 回答
1

在您的信息列表中添加隐私 - 麦克风使用说明,以授予应用程序访问权限以请求权限。这导致我 Thread13: signal SIGABRT 错误。完成此操作后,错误将自动解决。

于 2016-12-27T11:41:18.777 回答