AVAudioSession Swift

我正在写一个快速的iOS应用程序,将logging用户的声音。 我在swift中编写了下面的代码,但它无法从用户请求话筒权限。 它打印的授权,但它从来没有loggingaudio,并在隐私设置窗格中不列出的应用程序。 如何在swift中请求录制权限?

var session: AVAudioSession = AVAudioSession.sharedInstance() session.requestRecordPermission({(granted: Bool)-> Void in if granted { println(" granted") session.setCategory(AVAudioSessionCategoryPlayAndRecord, error: nil) session.setActive(true, error: nil) self.recorder.record() }else{ println("not granted") } }) 

由于iOS 7你需要检查它是否响应select器requestRecordPermission:

我已经使用iOS 8 BetaiPhone 5S检查了这个代码,它完美的工作。 一旦授予权限,系统将不会再次请求。

值得注意的是,它在使用模拟器时没有要求许可。

这是我尝试过的代码,正在工作:

 if (session.respondsToSelector("requestRecordPermission:")) { AVAudioSession.sharedInstance().requestRecordPermission({(granted: Bool)-> Void in if granted { println("granted") session.setCategory(AVAudioSessionCategoryPlayAndRecord, error: nil) session.setActive(true, error: nil) self.recorder () } else{ println("not granted") } }) } 

对于Swift 3

 let session = AVAudioSession.sharedInstance() if (session.responds(to: #selector(AVAudioSession.requestRecordPermission(_:)))) { AVAudioSession.sharedInstance().requestRecordPermission({(granted: Bool)-> Void in if granted { Linphone.manager.callUser(username: username) print("granted") do { try session.setCategory(AVAudioSessionCategoryPlayAndRecord) try session.setActive(true) } catch { print("Couldn't set Audio session category") } } else{ print("not granted") } }) }