Как мне решить, в каком окне открыть Настройки уведомлений в iOS 13 для userNotificationCenter: openSettingsFor :? - PullRequest
2 голосов
/ 01 ноября 2019

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

Стоит ли просто перебрать все сцены окна, доступные приложению, и найти однуна переднем плане?

...