Мне нужно создать приложение типа викторины, используя Siri.
Здесь, давайте рассмотрим, мое приложение имеет только один вопрос наряду с несколькими вариантами ответов.
Теперь с помощью голосовых команд Siri мне нужно загрузить этот вопрос вместе с вариантами выбора в Label / textview.
Как только этот вопрос будет загружен в Lable / textview, Siri должен ответить на этот вопрос.
Теперь пользователь может выбрать свой ответ либо a, либо b, либо c или d, используя свою голосовую команду.
Затем Siri должен подтвердить ввод пользователя с правильным ответом.
Если это правильно, Сири должен сказать «правильный ответ». В противном случае следует сказать «неправильный ответ. Правильный ответ и так далее .. »
Я выполнил половину своих требований. Используя ярлыки 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?
Спасибо в andvance.