2017-10-14 87 views
0

我的應用程序崩潰時當我嘗試請求允許使用iPhone的麥克風用下面的代碼:應用程序崩潰請求允許使用iPhone的麥克風與iOS 11

var permissionGranted = false 
switch AVAudioSession.sharedInstance().recordPermission() { 
case AVAudioSessionRecordPermission.granted: 
    setupRecorder() 
    permissionGranted = true 
case AVAudioSessionRecordPermission.denied: 
    permissionGranted = false 
case AVAudioSessionRecordPermission.undetermined: 
    AVAudioSession.sharedInstance().requestRecordPermission { 
     [weak self] granted in 
     if granted { 
      self?.setupRecorder() 
     } 
    } 
default: 
    permissionGranted = false 
    break 
} 

我還添加NSMicrophoneUsageDescription到應用程序的信息。 plist用繩子。當我運行該應用程序時,它崩潰了,Xcode打印出一條錯誤消息,說我需要向plist添加NSMicrophoneUsageDescription

+1

你得到什麼錯誤訊息? –

+0

更新您的問題,顯示Info.plist的相關部分,驗證您是否擁有正確的權限條目。 – rmaddy

+0

您確定您的項目的構建設置正在查找您的info.plist正確的路徑嗎? – MEnnabah

回答

0

試試以下功能

struct Manager { 
    static var recordingSession: AVAudioSession! 
    static var micAuthorised = Bool()   
} 

func CheckForPermission() 
    { 
     Manager.recordingSession = AVAudioSession.sharedInstance() 
     do 
     { 
      try Manager.recordingSession.setCategory(AVAudioSessionCategoryPlayAndRecord, with: .defaultToSpeaker) 
//   try Manager.recordingSession.setPreferredSampleRate(16000) 
//   try Manager.recordingSession.overrideOutputAudioPort(AVAudioSessionPortOverride.speaker) 
//   try Manager.recordingSession.setActive(true) 
      Manager.recordingSession.requestRecordPermission({ (allowed) in 
       if allowed 
       { 
        Manager.micAuthorised = true 
        print("Mic Authorised") 
       } 
       else 
       { 
        Manager.micAuthorised = false 
        print("Mic not Authorised") 
       } 
      }) 
     } 
     catch 
     { 
      print("Failed to set Category", error.localizedDescription) 
     } 
    }