Dies mag wie eine wirklich grundlegende Frage scheinen, aber ich habe Mühe, die Antwort zu finden. Soweit mir bekannt ist, ist AVAudioInputNode seit iOS 8 verfügbar und es kann zum Beispiel vom Mikrofon auf einem iPhone aufgenommen werden.AVAudioInputNode Erlaubnis
Ich weiß vorher würde ich AVAudioRecorderSession verwenden, um die Berechtigung zum Aufzeichnen und zu prüfen, ob ich die Erlaubnis usw. hatte. Was ich damit zu kämpfen habe, ist zu sehen, wie Sie die Berechtigung anfordern und überprüfen, wenn Sie AVAudioEngine verwenden.
Also in etwas wie dem unten, wie würde ich darüber gehen?
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()
}
}
ich bemerkt habe, dass das Mikrofon Privatsphäre Meldung in der plist und audioEngine.inputNode scheint Aufruf gesetzt werden kann, diese Nachricht zu präsentieren. Aber ich kann immer noch nicht sehen, wo ich prüfen kann, ob diese Erlaubnis erteilt wurde. Wenn ich
if (audioSession.recordPermission() == AVAudioSessionRecordPermission.granted){
}else{
print("No permission")
}
direkt nach der Zeile guard let inputNode
hinzufügen präsentiert er die Nachricht aber immer sagt mir, dass die Genehmigung nicht erteilt wird, bevor ich habe sogar auf die Warnung reagiert.
Was ist der beste Weg, um darüber zu gehen? Sollte ich einfach auf die audioSession Methoden zurückgreifen? Für das, was es wert ist, wurde viel von dem WWDC-Code um readRecognizer aufgehoben. Ich kann nur nicht sehen, wo sie die mic Erlaubnis behandeln
Tatsächlich scheint es nicht immer die Warnung zu präsentieren, um Erlaubnis zu bitten. Was soll ich hier als Beispiele fehlt ich gefunden habe, scheinen diese Erlaubnis Schritt