Как вернуть значение обратно в Siri Shortcut при использовании NSUserActivity? - PullRequest
0 голосов
/ 13 июня 2019

Я определяю функцию приложения, используя NSUserActivity, поэтому она отображается в Spotlight и Siri Shortcuts:

let activity = NSUserActivity(activityType: "com.myapp.siriTest")
activity.title = "Test function"
activity.userInfo = ["parameter" : "test"]
activity.isEligibleForSearch = true
activity.isEligibleForPrediction = true
activity.persistentIdentifier = NSUserActivityPersistentIdentifier(rawValue: "com.myapp.siriTest")
view.userActivity = activity
activity.becomeCurrent()

Эта часть работает нормально, после вызова вышеуказанной функции кнопка «Функция тестирования» появляется в Spotlight иСсылки.Если я запускаю приложение с этой целью, я могу прослушать его в моем AppDelegate:

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
    print("app started from spotlight or shortcuts"); 
    return true
}

Два вопроса:

  1. , если приложение было запущено с помощью ярлыка, созданного с помощьюПриложение ярлыков, возможно ли вернуть значение обратно в ярлык?Например, я бы вернул какой-то текст, и мой следующий шаг в ярлыке отправил бы смс-сообщение с этим текстом.
  2. Если у меня есть более одного NSUserActivity, как я могу их различить в моем AppDelegate restorationHandler?

1 Ответ

0 голосов
/ 19 июля 2019

Мне было любопытно, но очевидно невозможно.

Вывод на ярлыки обрабатывается намеренным ответом в SiriKit.

Один (хакерский) обходной путь, применяемый такими приложениями, как Jayson, - копировать выходные данные NSUseractivity в буфер обмена, а затем к ним можно получить доступ в ярлыках с помощью действия «Получить буфер обмена».

Либо добавьте намерения в свой проект.

...