如何以编程方式检查NSMicrophoneUsageDescription

Ant*_*o K 0 microphone ios privacy-policy swift3

我希望用户在应用程序中使用麦克风,并将相应的密钥添加到info.plist"Privacy-MicrophoneUsageDescription",如果用户点击麦克风按钮,则会出现带有使用权限问题的窗口.如果用户点击"允许",该应用程序工作正常,没有一些问题.但如果没有,再次按麦克风按钮,应用程序崩溃.

我想要的是,每次按下按钮时检查NSMicrophoneUsageDescription状态.如果被拒绝,请再次询问用户是否允许.

Dat*_*ris 5

所选的答案将不起作用requestRecordPermission方法是异步的,并且它不会在return语句中返回值之前更改permissionCheck的值正确的方法是使用完成处理程序

func askMicroPhonePermission(completion: @escaping (_ success: Bool)-> Void) {
    switch AVAudioSession.sharedInstance().recordPermission() {
    case AVAudioSessionRecordPermission.granted:
        completion(true)
    case AVAudioSessionRecordPermission.denied:
        completion(false) //show alert if required
    case AVAudioSessionRecordPermission.undetermined:
        AVAudioSession.sharedInstance().requestRecordPermission({ (granted) in
            if granted {
                completion(true)
            } else {
                completion(false) // show alert if required
            }
        })
    default:
        completion(false)
    }
}
Run Code Online (Sandbox Code Playgroud)

我修改了所选答案以包含一个完成处理程序,而不是它有一个return语句