SFSpeechRecognizer 未经授权的案例从未进入
SFSpeechRecognizer not authorized cases never entered
我正在按照一个简单的教程 here 来使 iOS 语音识别正常工作。
即使用户拒绝麦克风访问,当我在模拟器中 运行 它时,它总是进入授权情况并打印出 authorized,甚至在用户之前在提示中选择允许。 MyaskSpeechPermission
从未被调用。我该如何解决这个问题?
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
}
}
}
}
欢迎来到 Stack Overflow!
一旦用户授权或拒绝请求,即使再次调用requestAuthorization也不会再显示。如果您从模拟器中删除该应用程序,然后在 Xcode 中重新 运行,它将清除之前的选择并允许再次出现该对话框。
我 运行 您发布的代码似乎按预期工作。
我正在按照一个简单的教程 here 来使 iOS 语音识别正常工作。
即使用户拒绝麦克风访问,当我在模拟器中 运行 它时,它总是进入授权情况并打印出 authorized,甚至在用户之前在提示中选择允许。 MyaskSpeechPermission
从未被调用。我该如何解决这个问题?
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
}
}
}
}
欢迎来到 Stack Overflow!
一旦用户授权或拒绝请求,即使再次调用requestAuthorization也不会再显示。如果您从模拟器中删除该应用程序,然后在 Xcode 中重新 运行,它将清除之前的选择并允许再次出现该对话框。
我 运行 您发布的代码似乎按预期工作。