Если ваше приложение поддерживает сцены, то, когда пользователь долго нажимает значок вашего приложения в Springboard и нажимает на один из элементов вашего контекстного меню, этот метод вызывается в вашем делегате сцены:
windowScene(_:performActionFor:completionHandler:)
Но если ваше приложение также поддерживает несколько окон, среде выполнения нужен способ узнать , какой делегат сцены окна вызывает.
Чтобы ответить на этот вопрос,activationConditions
вашего UIScene должен быть установлен в объект UISceneActivationConditions, чьи canActivateForTargetContentIdentifierPredicate
и prefersToActivateForTargetContentIdentifierPredicate
соответствующие предикаты указывают. Рассматриваемый targetContentIdentifier
является свойством UIApplicationShortcutItem;это просто строка, такая как "myShortcutIdentifier"
.
* Предикат self
равен входящей targetContentIdentifier
строке, поэтому предикат будет выглядеть примерно так:
let pred = NSPredicate(format: "self == 'myShortcutIdentifier'")
Пока все хорошо (как объяснено в https://developer.apple.com/videos/play/wwdc2019/259/). Но как прикрепить целевой идентификатор контента к статическому UIApplicationShortcutItem, определенному в Info.plist ?