当我尝试使用以下代码请求使用 iPhone 麦克风的权限时,我的应用程序崩溃:
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
添加到应用程序的 Info.plist 中。当我运行应用程序时,它崩溃了,Xcode 打印一条错误消息,说我需要将NSMicrophoneUsageDescription
添加到 plist。
尝试使用以下函数
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)
}
}