【问题标题】:requestRecordPermission does nothingrequestRecordPermission 什么都不做
【发布时间】:2013-09-28 06:06:27
【问题描述】:

自 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 中可用。

谢谢。

【问题讨论】:

  • 我觉得Yogesh Maheshwari的回答比较正确,应该设置为答案。

标签: ios permissions ios7 record avaudiosession


【解决方案1】:

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

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

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

Go to Settings -> General -> Reset -> Reset Location & Privacy and then press "Reset Warnings" when asked.

【讨论】:

    【解决方案2】:

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

    如果您想对其进行测试,请更改应用的捆绑 ID 并尝试。

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • 尝试显示您的建议的代码,以提供更高质量的答案。
        猜你喜欢
        • 2019-03-08
        • 2016-12-24
        • 2017-04-18
        • 2011-08-03
        • 2014-05-11
        • 2014-09-10
        • 1970-01-01
        • 2023-03-29
        • 2012-05-09
        相关资源
        最近更新 更多