AVAudioInputNode权限

时间:2016-07-15 09:12:17

标签: ios avaudiosession avaudioengine

这似乎是一个非常基本的问题,但我很难找到答案。据我所知,自iOS 8以来AVAudioInputNode已经可用,它可以用来记录iPhone上的麦克风。

我之前知道如果我有权限等,我会使用AVAudioRecorderSession来请求记录和检查的权限。我正在努力解决的是在使用AVAudioEngine时如何请求和检查权限。

所以在下面的内容中,我将如何做到这一点?

   if (audioSession.recordPermission() == AVAudioSessionRecordPermission.granted){

    }else{
        print("No permission")
    }

我注意到可以在plist中设置麦克风隐私消息,并且调用audioEngine.inputNode似乎会显示此消息。但我仍然无法确定在哪里检查是否已授予该权限。如果我添加

guard let inputNode

直接在 value | Rank | Type 1.5 | 5 | alpha 2.4 | 4 | alpha 3.6 | 3 | alpha 4.63 | 2 | alpha 5.36 | 1 | alpha 行之后显示消息,但总是告诉我在我甚至回应警报之前未授予许可。

最好的方法是什么?我应该先回到使用audioSession方法吗?对于它的价值很多,这是从围绕speechRecognizer的WWDC代码中解脱出来的。我无法看到他们处理麦克风许可的位置

事实上,它似乎并不总是提出请求权限的警报。我在这里遗漏的是因为我发现的例子似乎跳过了这个许可步骤

1 个答案:

答案 0 :(得分:0)

好的,看看我发现的文档:

  

录制音频需要用户明确许可。应用程序的音频会话第一次尝试使用音频输入   在使用能够记录的类别时,系统   自动提示用户许可。你可以明确地问   之前通过调用此方法。在用户授予您的应用之前   录制许可,您的应用只能录制静音。

     

此方法始终立即返回,但响应块等待   用户输入,如果用户先前未授予或拒绝权限   在您的应用中记录。

     

当用户响应您的应用的录制权限提示时,   系统会记住这个选择。如果用户拒绝录制   权限,他们可以在设置>中重新启用它隐私>麦克风。

所以看起来它首次尝试使用麦克风时会自动执行此操作,但理想情况下我应该事先询问此权限