通过 SiriKit 启动应用程序时打开不同的 UIViewController

Open a different UIViewController when app is launched via SiriKit

我正在尝试在我的 iOS 应用程序中实施 SiriKit。我想在应用程序 通过 Siri 启动时打开不同的视图控制器。

如何在我的应用程序中处理此类操作?

你可以做到这一点,但是,首先你必须在你的应用程序中设置 SiriKit,这是一个长长的指令列表:https://developer.apple.com/library/prerelease/content/documentation/Intents/Conceptual/SiriIntegrationGuide/index.html#//apple_ref/doc/uid/TP40016875-CH11-SW1 .

A​​pple 还提供了一个名为 UnicornChat 的示例 SiriKit 应用程序:https://developer.apple.com/library/content/samplecode/UnicornChat/Introduction/Intro.html

一旦您添加了 SiriKit 应用程序扩展并正确处理了您的 Intent,您将能够使用与您的 Intent 关联的 ResponseCode 将其发送到您的应用程序。这将打开您的应用程序,您可以通过将以下代码添加到您的应用程序委托来捕获它并将其发送到 WhateverViewController:

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
    // implement to handle user activity created by Siri or by our SiriExtension

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

    // Access the storyboard and fetch an instance of the view controller
    let viewController: WhateverViewController = storyboard.instantiateViewController(withIdentifier: "WhateverViewController") as! WhateverViewController
    window?.rootViewController = viewController
    window?.makeKeyAndVisible()
}