这似乎是一个很基本的问题,但我在努力寻找答案。据我所知,AVAudioInputNode自iOS 8以来一直可用,例如,它可用于从iPhone上的麦克风进行录制。AVAudioInputNode许可
我以前就知道我会用AVAudioRecorderSession来请求权限来记录和检查我是否有权限等等。我正在努力的是在使用AVAudioEngine时看到如何请求和检查权限。
所以在类似下面,我将如何去这样做?
import AVFoundation
class ViewController: UIViewController {
let audioEngine = AVAudioEngine()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func recordPressed(sender:AnyObject) {
try! startRecording()
}
func startRecording() throws{
let audioSession = AVAudioSession.sharedInstance()
try audioSession.setCategory(AVAudioSessionCategoryRecord)
try audioSession.setMode(AVAudioSessionModeMeasurement)
try audioSession.setActive(true, withOptions: .NotifyOthersOnDeactivation)
guard let inputNode = audioEngine.inputNode else { fatalError("Audio engine has no input node") }
let recordingFormat = inputNode.outputFormatForBus(0)
inputNode.installTapOnBus(0, bufferSize: 1024, format: recordingFormat) { (buffer: AVAudioPCMBuffer, when: AVAudioTime) in
}
audioEngine.prepare()
try audioEngine.start()
}
}
我注意到,麦克风隐私信息可以在plist中进行设置,并呼吁audioEngine.inputNode似乎出现此消息。但我仍然无法看到在哪里查看是否已授予此权限。如果我的guard let inputNode
行后添加
if (audioSession.recordPermission() == AVAudioSessionRecordPermission.granted){
}else{
print("No permission")
}
直接它呈现的消息,但总是告诉我,之前的权限我连回应了警报不批。
什么是去了解它的最好方法?我应该回到使用audioSession方法吗?对于它的价值,很多都是从speechrecognizer周围的WWDC代码中解放出来的。我只是不明白,他们正在处理的麦克风许可
其实它并不总是似乎呈现警惕请求权限。缺少什么我在这里,因为我已经找到了例子似乎跳过此许可步骤