Метод UISceneDelegate (_: openURLContexts :) когда-либо вызывался в определенной сцене или только в «первом»? - PullRequest
1 голос
/ 21 сентября 2019

Я знаю, что метод делегата UISceneDelegate scene(_:openURLContexts:) подразумевается как UIScene эквивалент метода делегата UIApplicationDelegate application(_:open:options:).Но приложение может иметь несколько активных сцен, в то время как только один вызов вызовет этот делегат за раз, и это всегда кажется «первой» сценой.

Есть ли какое-либо условие или действие, которое приведет к определенной сцене (и не только «первый») с вызываемым делегатом openURLContexts или это оказалось ошибочным дизайном?Чего мне не хватает?

Позвольте мне прояснить ситуацию на примере.

У вас есть приложение, которое поддерживает несколько сцен в iPadOS.Пользователь активно использует две параллельные сцены для вашего приложения.На заднем плане могут быть даже отдельные сцены.В любом случае, предположим, что есть несколько сцен.

Предположим также, что ваше приложение может открывать файлы определенных типов.Пользователь переключается с вашего приложения на приложение «Файлы» или практически на любое приложение, которое позволяет вам поделиться файлом.В другом приложении вы выбираете файл и открываете его с помощью своего приложения (с несколькими сценами).

На этом этапе ваше приложение возвращается на передний план, и делегат openURLContexts вызывается только на одномактивных в данный момент сцен в вашем приложении.

Та же проблема возникает, если ваше приложение поддерживает настраиваемую схему URL-адресов и ваше приложение запускается (или возвращается на передний план) через свою настраиваемую схему URL-адресов.

Так какой смысл это делать делегату на сцене?Есть несколько сцен.Этот делегат вызван только у одного.В зависимости от потребностей вашего приложения вы, вероятно, захотите обрабатывать этот файл только в одной конкретной сцене, но это может быть не та сцена, делегат которой был вызван.Вам нужно написать код, чтобы просмотреть существующие сцены и определить, какой из них должен обрабатывать файл, независимо от того, какая сцена была вызвана.

Учитывая это, было бы лучше просто вызвать UIApplicationDelegate для обработки запроса на открытый URL?Или, как указано в моем первоначальном вопросе во втором абзаце, существуют ли условия, которые вызывают делегата в определенной сцене?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...