Определение того, было ли приложение iOS запущено через Siri

Я искал вечно, но не нашел... Знаете ли вы, есть ли способ определить, было ли мое приложение для iOS запущено Siri или пользователем, нажав значок приложения?

Мне нужно знать, потому что я хочу автоматизировать действие при запуске только тогда, когда мое приложение запускается из Siri.

Я думал, что, возможно, приложение:didFinishLaunchingWithOptions или какой-либо другой API позволит моему приложению узнать, как оно было запущено, но это не так (или я просто пропустил его).

Любая идея, если есть какой-то трюк, который я мог бы использовать, пока Apple не опубликует какой-либо официальный / публичный Siri API?

3 ответа

Единственное, что я могу предложить, это проверить словарь launchOption, переданный как часть application:willFinishLaunchingWithOptions: а также application:didFinishLaunchingWithOptions:,

Существует один ключ, который утверждает, что в нем указано имя приложения, которое запросило запуск ваших приложений, и, возможно, Siri будет в списке:

Из яблочного документа, расположенного здесь:

UIApplicationLaunchOptionsSourceApplicationKey

Наличие этого ключа идентифицирует приложение, которое запросило запуск вашего приложения. Значением этого ключа является объект NSString, который представляет идентификатор пакета приложения, сделавшего запрос. Этот ключ также используется для доступа к тому же значению в словаре userInfo уведомления с именем UIApplicationDidFinishLaunchingNotification. Доступный в iOS 3.0 и позже. Объявлено в UIApplication.h.

Когда я запускаю из Siri, вызывается приложение:didFinishLaunchingWithOptions. Тем не менее, мой словарь launchOptions пуст. Если я запускаю приложение по схеме URL, в моем словаре launchOptions есть соответствующие ключи. В настоящее время не представляется возможным узнать, было ли приложение запущено с Siri.

Список параметров запуска, предоставляемых Apple

let UIApplicationLaunchOptionsURLKey: String let UIApplicationLaunchOptionsSourceApplicationKey: String let UIApplicationLaunchOptionsRemoteNotificationKey: String let UIApplicationLaunchOptionsLocalNotificationKey: String let UIApplicationLaunchOptionsAnnotationKey: String let UIApplicationLaunchOptionsLocationKey: String let UIApplicationLaunchOptionsNewsstandDownloadsKey: String let UIApplicationLaunchOptionsBluetoothCentralsKey: String let UIApplicationLaunchOptionsBluetoothPeripheralsKey: String let UIApplicationLaunchOptionsShortcutItemKey: String let UIApplicationLaunchOptionsUserActivityDictionaryKey: String let UIApplicationLaunchOptionsUserActivityTypeKey: String

Вот ссылка на документацию Apple.
Вот ссылка на Quora относительно официальной / публичной Siri API Quora Link

Другие вопросы по тегам