// Wrap the speech recognition permission request in an async function
func requestSpeechRecognitionPermission() async -> Bool {
return await withCheckedContinuation { continuation in
SFSpeechRecognizer.requestAuthorization { authStatus in
DispatchQueue.main.async {
continuation.resume(returning: authStatus == .authorized)
}
}
}
}
// Wrap the microphone permission request in an async function
func requestMicrophonePermission() async -> Bool {
return await withCheckedContinuation { continuation in
AVAudioSession.sharedInstance().requestRecordPermission { granted in
DispatchQueue.main.async {
continuation.resume(returning: granted)
}
}
}
}
// Combine both permission requests in a single async function
func requestSpeechAndMicrophonePermissions() async -> Bool {
let isSpeechAuthorized = await requestSpeechRecognitionPermission()
guard isSpeechAuthorized else { return false }
let isMicrophoneAuthorized = await requestMicrophonePermission()
return isMicrophoneAuthorized
// Wrap the speech recognition permission request in an async function func requestSpeechRecognitionPermission() async -> Bool { return await withCheckedContinuation { continuation in SFSpeechRecognizer.requestAuthorization { authStatus in DispatchQueue.main.async { continuation.resume(returning: authStatus == .authorized) } } } }
// Wrap the microphone permission request in an async function func requestMicrophonePermission() async -> Bool { return await withCheckedContinuation { continuation in AVAudioSession.sharedInstance().requestRecordPermission { granted in DispatchQueue.main.async { continuation.resume(returning: granted) } } } }
// Combine both permission requests in a single async function func requestSpeechAndMicrophonePermissions() async -> Bool { let isSpeechAuthorized = await requestSpeechRecognitionPermission() guard isSpeechAuthorized else { return false }
}