如何使用Siri打开/触发视图控制器?

时间:2017-08-05 16:12:16

标签: ios swift sirikit

我正在学习SiriKit,我遇到了一个大问题。我建立了一个应用程序,有时他工作,有时他不工作。我想打开一个特定的控制器,而不是说“开始苹果运动”或类似的东西。我用户锻炼,因为它是最简单的,我想知道我是否只能说“通过MyApp打开配置文件”。这可能吗?

这是我的代码:

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
    guard let intent = userActivity.interaction?.intent as? INStartWorkoutIntent else {
        print("AppDelegate: Start Workout Intent - FALSE")
        return false
    }
    print("AppDelegate: Start Workout Intent - TRUE")
    print("INTENT: ", intent)

    self.window = UIWindow(frame: UIScreen.main.bounds)

    let storyboard = UIStoryboard(name: "Main", bundle: nil)

    guard let spokenPhrase = intent.workoutName?.spokenPhrase else {
        return false
    }

    switch spokenPhrase {
    case "test":
        let vc = storyboard.instantiateViewController(withIdentifier: "firstVC")

        self.window?.rootViewController = vc
        self.window?.makeKeyAndVisible()


    case "apple":
        let vc = storyboard.instantiateViewController(withIdentifier: "secondVC")

        self.window?.rootViewController = vc
        self.window?.makeKeyAndVisible()

    default:
        break
    }

    return true
}

1 个答案:

答案 0 :(得分:2)

不,那是不可能的。 SiriKit只能用于特定的场景。由于Siri适用于自然语言处理,因此需要“收听”文本中的某些特定单词才能将这些单词解码为Swift个对象。每个Intent都有一些特定的关键字需要说明,否则Siri将无法将用户输入识别为特定的Intent

即使你会“破解”你的应用程序做一些与锻炼无关的事情并使用锻炼意图从Siri打开它,你的应用很可能会被AppStore拒绝。