我需要使用 Siri 构建一个测验类型的应用程序。在这里,让我们考虑一下,我的应用程序只有一个问题以及多个选择作为答案。现在使用 Siri 语音命令,我需要将该问题连同选项一起加载到标签/文本视图中。一旦该问题被加载到 Lable/textview 上,这个问题应该由 Siri 说出。现在用户可以使用他们的语音命令选择他/她的答案 a 或 b 或 c 或 d。然后 Siri 应该用正确的答案来验证用户的输入。如果正确,Siri 应该说“正确答案”。否则它应该说“错误答案。正确答案是等等……”</p>
我已经实现了一半的要求,使用 Siri 快捷方式,我可以将问题加载到标签上,Siri 可以说出这个问题。
供您参考,请在下面找到我的代码。
在ViewController.swift
文件中我已经实现了下面的代码,
Public fund createShortcutForloadingQuestion(){
let userAct = NSUserActivity(activityType: "com.organization.QuizSpeakingApp.loadQuestion")
userAct.title = "get the text from document"
userAct.userInfo = ["question" : "what is the capital of India? \n a. Kolkata \n b. Mumbai, \n c. Bengaluru,\n d. New Delhi"]
userAct.isEligibleForSearch = true
userAct.isEligibleForPrediction = true
userAct.persistentIdentifier = NSUserActivityPersistentIdentifier("com.organization.QuizSpeakingApp.loadQuestion")
textLbl.userActivity = userAct
userAct.becomeCurrent()
displayTextOnLabel()
}
public func displayTextOnLabel() {
textLbl.text = “what is the capital of India? \n a. Kolkata \n b. Mumbai, \n c. Bengaluru,\n d. New Delhi.”
}
要说出加载的问题,我已经实现了如下代码,
public func speakTheQuestion(){
let speechUtterance = AVSpeechUtterance(string: textLbl.text ?? "Label Doesnt have any text")
speechUtterance.rate = 0.5
speechUtterance.pitchMultiplier = 1.0
speechUtterance.volume = 1.0
speechUtterance.postUtteranceDelay = 0.005
speechSynthesizer.speak(speechUtterance)
}
现在要创建加载问题的快捷方式并说出加载的问题,我已经在AppDelegate.swift
.
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
let viewController = window?.rootViewController as! ViewController
viewController.displayTextOnLabel()
viewController.speakTheQuestion()
return true
}
通过上述实现,我可以加载问题并通过 Siri 说出问题。
现在,任何人都可以帮助我如何使用语音命令获取用户答案,如何使用正确答案验证他们的答案以及如何使用 Siri 更新他的答案?
谢谢你。