这似乎是一个非常基本的问题,但我很难找到答案。据我所知,自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代码中解脱出来的。我无法看到他们处理麦克风许可的位置
事实上,它似乎并不总是提出请求权限的警报。我在这里遗漏的是因为我发现的例子似乎跳过了这个许可步骤
答案 0 :(得分:0)
好的,看看我发现的文档:
录制音频需要用户明确许可。应用程序的音频会话第一次尝试使用音频输入 在使用能够记录的类别时,系统 自动提示用户许可。你可以明确地问 之前通过调用此方法。在用户授予您的应用之前 录制许可,您的应用只能录制静音。
此方法始终立即返回,但响应块等待 用户输入,如果用户先前未授予或拒绝权限 在您的应用中记录。
当用户响应您的应用的录制权限提示时, 系统会记住这个选择。如果用户拒绝录制 权限,他们可以在设置>中重新启用它隐私>麦克风。
所以看起来它首次尝试使用麦克风时会自动执行此操作,但理想情况下我应该事先询问此权限