2016-07-15 4 views
0

이 질문은 정말 기본적인 질문처럼 보일 수 있지만 답변을 찾는 데 어려움을 겪고 있습니다. 내가 아는 한 AVAudioInputNode는 iOS 8부터 사용할 수 있으며 iPhone의 마이크에서 녹음하는 데 사용할 수 있습니다.AVAudioInputNode permission

이전에 AVAudioRecorderSession을 사용하여 권한 및 기타 권한을 요청한 경우 AVAudioRecorderSession을 사용하여 AVAudioEngine을 사용할 때 권한을 요청하고 확인하는 방법을 확인했습니다.

그래서 아래와 같이 어떻게하면 좋을까요? 마이크 개인 정보 보호 메시지가 PLIST에 설정하고 audioEngine.inputNode를 호출하면이 메시지를 제시하는 것 같다 될 수

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() 


    } 

} 

나는 나타났습니다. 그러나 그 허가가 부여되었는지를 어디서 확인해야하는지 아직 알 수 없습니다. 나는 guard let inputNode 줄 끝에서

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

    }else{ 
     print("No permission") 
    } 

직접

를 추가하는 경우이 메시지를 제시하지만, 항상 나에게 심지어 경고에 응답 한 전에 부여되지 않은 해당 권한을 알려줍니다.

이것에 대해 이동하는 가장 좋은 방법은 무엇입니까? 먼저 audioSession 메서드를 먼저 사용해야할까요? 상당 부분이 speechrecognizer 주위의 WWDC 코드에서 해제되었습니다. 마이크 권한을 처리하는 곳을 볼 수 없습니다.

실제로 권한을 요청하기 위해 경고를 표시하는 것은 아닙니다. 내가 내가 찾은 예제 여기에 놓치고 것은 내가이 발견 된 문서를 찾고이 권한 단계 확인

답변

0

을 건너 뛸 것 :

오디오 녹음이 사용자로부터 명시적인 권한이 필요합니다. 앱의 오디오 세션이 녹음을 허용하는 카테고리를 사용하는 동안 오디오 입력을 사용하려고 시도하면 시스템 이 자동으로 사용자의 허가를 요청합니다. 이 메서드를 호출하여 먼저 에 명시 적으로 요청할 수 있습니다. 사용자가 앱에 권한을 부여 할 때까지는 앱이 묵음 만 녹음 할 수 있습니다.

이 메소드는 항상 즉시 반환하지만 사용자가 이전에 앱에 권한을 부여하거나 거부하지 않은 경우 응답 블록은 사용자 입력을 기다리고 있습니다.

사용자가 앱에 대한 녹음 허용 프롬프트에 응답하면 시스템에서 선택 사항을 기억합니다. 사용자가 녹음 권한을 거부 한 경우 설정> 개인 정보> 마이크에서 다시 사용 가능하게 설정할 수 있습니다. 먼저 마이크를 사용하려고 할 때 자동으로 그 일처럼

그래서 그것은 보이지만, 이상적으로 나는

선행이 권한을 요청해야