Как включить уведомление переднего плана только для некоторых UIViewControllers? - PullRequest
1 голос
/ 06 января 2020

Я хочу показывать уведомление на переднем плане только для некоторых выбранных UIViewControllers.

Но когда я устанавливаю NotificationCenter для получения уведомления на переднем плане для указанных c UIViewController, тогда Swift делает это для глобальной области видимости. На некоторых экранах я не хочу, чтобы уведомление появлялось на переднем плане, и для этого я должен указывать на каждом экране, отображать уведомление на переднем плане или нет, что приводит к тому, что большая часть кода обычно неуправляема.

1 Ответ

5 голосов
/ 06 января 2020

Вы можете поместить условие в метод делегата уведомлений, чтобы отображать уведомление для указанного c контроллера представления или нет.

@available(iOS 10.0, *)
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {

    let navigationController: UINavigationController = self.window?.rootViewController as! UINavigationController

    if (navigationController.topViewController is FirstViewController) || (navigationController.topViewController is SecondViewController) { 

        //Show notification for First and Second ViewController 
        completionHandler([.alert, .badge, .sound])
    }
    else {
       //Do whatever when you don't want to show notification
    }
}

Надеюсь, это будет полезно для вас ...

...