Определение того, было ли приложение 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