6

我知道UISceneDelegate scene(_:openURLContexts:)委托方法UIScene相当于UIApplicationDelegate application(_:open:options:)委托方法。但是一个应用程序可以有多个活动场景,而一次只有一个会调用这个委托,而且它似乎总是“第一个”场景。

是否有任何条件或动作会导致特定场景(而不仅仅是“第一个”场景)的openURLContexts委托被调用,或者这是否是一个有缺陷的设计?我错过了什么?

让我用一个例子来说明情况。

您有一个支持 iPadOS 中多个场景的应用程序。用户正在为您的应用积极使用两个并排的场景。背景中甚至可能存在一些不连贯的场景。无论哪种方式,假设有多个场景。

假设您的应用程序可以打开某些类型的文件。用户从您的应用程序切换到文件应用程序或几乎任何允许您共享文件的应用程序。在另一个应用程序中,您选择一个文件并选择使用您的(多场景)应用程序打开它。

此时,您的应用程序被放回前台,并且openURLContexts仅在您的应用程序中当前活动的场景之一上调用委托。

如果您的应用程序支持自定义 URL 方案并且您的应用程序通过其自定义 URL 方案启动(或回到前台),则会出现同样的问题。

那么在场景委托上做这件事有什么意义呢?有多个场景。只有一个人调用了这个代表。根据您的应用程序的需要,您可能只想在一个特定场景中处理此文件,但它可能不是调用委托的场景。您需要编写代码来遍历现有场景并确定应该由哪个场景实际处理文件,而不管调用的场景如何。

UIApplicationDelegate鉴于此,调用处理打开的 URL 请求不是更好吗?或者,正如我在第二段中的原始问题所述,是否存在在特定场景中调用代表的条件?

4

0 回答 0