Если приложение находится на переднем плане, вы должны использовать UNUserNotificationCenterDelegate.
UNUserNotificationCenter.current().delegate = self
Сначала уведомите этого делегата в viewDidLoad.
extension ViewController: UNUserNotificationCenterDelegate {
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification,
withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
return completionHandler([.alert, .sound, .badge])
}
}
И после можно использовать такой делегат. Ознакомьтесь с дополнительной информацией в этом сообщении -> Локальные уведомления