如何决定在 iOS 13 上为 userNotificationCenter:openSettingsFor: 打开通知设置的窗口?

chr*_*lig 5 uiwindow ios unusernotificationcenter ios13 uiscene

iOS 具有以下调用方法,因此您可以通过通知中心或设置应用程序向用户提供自定义通知设置:

func userNotificationCenter(_ center: UNUserNotificationCenter, openSettingsFor notification: UNNotification?) {
    // Open up a Settings view controller within your app or something        
}
Run Code Online (Sandbox Code Playgroud)

在其中,您将打开一些应用内设置视图控制器。

在 iOS 12 上这很容易,找到活动窗口,找到 rootViewController 并将设置屏幕扔到它上面。

在 iOS 13 上你(可以)有多个窗口,所以我假设这个方法可以在其中任何一个上调用?

假设您有 5 个应用程序窗口在后台打开,然后您打开“设置”应用程序并请求应用程序的通知设置。它使用哪个窗口?我如何知道要将设置屏幕添加到哪个窗口/视图控制器?我不想随机选择一个并且不小心将它添加到背景中的一个而不是打开的那个。

UNNotificationResponse另一方面,确实有一种targetScene方法,因此如果您的应用程序是从通知中打开的,您就可以知道要使用哪个窗口,但这种方法似乎缺乏它。

我应该遍历应用程序可用的所有窗口场景并在前台找到一个吗?