這似乎是一個很基本的問題,但我在努力尋找答案。據我所知,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代碼中解放出來的。我只是不明白,他們正在處理的麥克風許可
其實它並不總是似乎呈現警惕請求權限。缺少什麼我在這裏,因爲我已經找到了例子似乎跳過此許可步驟