我正在尝试写一个快速的iOS应用程序,将记录用户的声音。我用swift编写了以下代码,但是它无法从用户那里请求麦克风权限。它打印授权,但它从来没有录制音频,并且在设置窗格中的隐私下,它没有列出应用程序。如何在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")
}
})发布于 2014-06-22 01:53:01
从iOS 7开始,您需要检查它是否响应选择器requestRecordPermission:
我已经使用iPhone 5S和iOS 8测试版测试了这段代码,它工作得很好。一旦您授予权限,系统将不会再次请求它。
值得一提的是,在使用模拟器时,它没有请求许可。
这是我尝试过的代码,并且正在运行:
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")
}
})
}发布于 2017-05-15 09:25:02
对于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")
}
})
}发布于 2018-04-12 14:58:38
Swift 5
var session: AVAudioSession = AVAudioSession.sharedInstance()
@IBAction func btnmike(_ sender: Any) {
// let session = AVAudioSession.sharedInstance()
if (session.responds(to: #selector(AVAudioSession.requestRecordPermission(_:)))) {
AVAudioSession.sharedInstance().requestRecordPermission({(granted: Bool)-> Void in
if granted {
print("granted")
do {
try self.session.setCategory(AVAudioSessionCategoryPlayAndRecord)
try self.session.setActive(true)
}
catch {
print("Couldn't set Audio session category")
}
} else{
print("not granted")
}
})
}
}https://stackoverflow.com/questions/24318791
复制相似问题