首页 > 解决方案 > 如何决定在 iOS 13 上为 userNotificationCenter:openSettingsFor: 打开通知设置的窗口?

问题描述

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

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

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

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

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

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

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

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

标签: iosios13uiwindowunusernotificationcenteruiscene

解决方案


推荐阅读