请求在iOS 11中使用iPhone麦克风的权限时应用程序崩溃



当我尝试使用以下代码请求使用 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)
        }
    }

最新更新