Откройте другой UIViewController при запуске приложения через SiriKit

#ios #swift #siri #sirikit

#iOS #swift #siri #sirikit

Вопрос:

Я пытаюсь реализовать SiriKit в своем приложении для iOS. Я хочу открыть другой контроллер просмотра при запуске приложения через Siri.

Как я могу обработать этот тип операции в моем приложении?

Комментарии:

1. Привет, Вивек, добро пожаловать в StackOverflow! В настоящее время этот вопрос слишком широк для сообщества StackOverflow. Покажите, какие исследования вы провели по этой проблеме, какие попытки вы предприняли для решения, а затем попытайтесь сделать свой вопрос более конкретным. Также рассмотрите возможность чтения документации Apple по SiriKit и AppDelegate / UIViewController.

Ответ №1:

Вы можете это сделать, однако сначала вам придется настроить SiriKit в вашем приложении, что требует небольшой работы с длинным списком инструкций: https://developer.apple.com/library/prerelease/content/documentation/Intents/Conceptual/SiriIntegrationGuide/index.html#//apple_ref/doc/uid/TP40016875-CH11-SW1 .

Также есть пример приложения SiriKit, которое Apple создала под названием UnicornChat:https://developer.apple.com/library/content/samplecode/UnicornChat/Introduction/Intro.html

После того, как вы добавили расширение приложения SiriKit и правильно обработали свое намерение, вы сможете отправить его в свое приложение, используя 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()
}