В 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
метод, так что если ваше приложение открывается из уведомления, вы можете знать, какое окно использовать, но этому методу, по-видимому, его не хватает.
Стоит ли просто перебрать все сцены окна, доступные приложению, и найти однуна переднем плане?