我遵循一个简单的教程这里,以使iOS语音识别工作。
即使当用户拒绝麦克风访问时,当我在模拟器中运行它时,它也总是在授权的情况下运行,并打印出授权的,甚至在用户在提示符中选择允许之前也是如此。我的askSpeechPermission从未被调用过。我该怎么解决这个问题?
let audioEngine = AVAudioEngine()
let speechRecognizer = SFSpeechRecognizer(locale: Locale.init(identifier: "en-US"))
let request = SFSpeechAudioBufferRecognitionRequest()
var recognitionTask: SFSpeechRecognitionTask?
override func viewDidLoad() {
super.viewDidLoad()
switch SFSpeechRecognizer.authorizationStatus() {
case .notDetermined:
askSpeechPermission()
print("not determined")
case .authorized:
self.status = .ready
print("authorized")
case .denied, .restricted:
self.status = .unavailable
print("denied or restricted")
}
}
func askSpeechPermission() {
SFSpeechRecognizer.requestAuthorization { status in
OperationQueue.main.addOperation {
switch status {
case .authorized:
self.status = .ready
default:
self.status = .unavailable
}
}
}
}发布于 2019-01-14 01:44:18
欢迎来到堆栈溢出!
一旦用户授权或拒绝请求,即使再次调用requestAuthorization,也不会再次显示该请求。如果您从模拟器中删除应用程序,然后在Xcode中重新运行,它将清除先前的选择,并允许对话框再次出现。
我运行了你发布的代码,看起来像预期的那样正常工作。
https://stackoverflow.com/questions/54173707
复制相似问题