首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SFSpeechRecognizer未获授权的病例从未输入

SFSpeechRecognizer未获授权的病例从未输入
EN

Stack Overflow用户
提问于 2019-01-13 22:13:23
回答 1查看 1K关注 0票数 0

我遵循一个简单的教程这里,以使iOS语音识别工作。

即使当用户拒绝麦克风访问时,当我在模拟器中运行它时,它也总是在授权的情况下运行,并打印出授权的,甚至在用户在提示符中选择允许之前也是如此。我的askSpeechPermission从未被调用过。我该怎么解决这个问题?

代码语言:javascript
复制
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
            }
        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-14 01:44:18

欢迎来到堆栈溢出!

一旦用户授权或拒绝请求,即使再次调用requestAuthorization,也不会再次显示该请求。如果您从模拟器中删除应用程序,然后在Xcode中重新运行,它将清除先前的选择,并允许对话框再次出现。

我运行了你发布的代码,看起来像预期的那样正常工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54173707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档