ソースコード
final class VoiceRecognitionRequester {
static func request() async -> Bool {
if await !AVCaptureDevice.requestAccess(for: .audio) {
return false
}
return await SFSpeechRecognizer.requestAuthorization() == .authorized
}
}
extension SFSpeechRecognizer {
static func requestAuthorization() async -> SFSpeechRecognizerAuthorizationStatus {
await withCheckedContinuation { continuation in
SFSpeechRecognizer.requestAuthorization { status in
continuation.resume(returning: status)
}
}
}
}
使用例
.onAppear {
Task {
async let result = VoiceRecognitionRequester.request()
if await result {
print("許可された")
}
}
}