Выберите, чтобы показывать уведомления пользователю на переднем плане Swift 5 [iOS]

#ios #swift #push-notification

#iOS #быстрый #push-уведомление

Вопрос:

Мое приложение всегда показывает уведомления в фоновом режиме и на переднем плане, но иногда оно должно игнорировать уведомления в зависимости от типа.

Две функции выполняют работу с уведомлениями переднего плана:

  • userNotificationCenter: Он работает только с предварительными уведомлениями.
 func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) { 
    completionHandler([.alert, .badge, .sound]) 
}
 
  • приложение: Оно работает, когда пользователь нажимает на уведомление
 func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) { 
    ... JOB ... 
}
 

Мне нужно запретить (на переднем плане) «userNotificationCenter» иногда показывать видимое уведомление, но всегда запускать «приложение» (задание).

Как я могу напрямую вызвать « application » без использования « completionHandler([.alert, .badge, .sound]) »

Комментарии:

1. Ваш вариант использования для didReceiveRemoteNotification неверен. Показывать или не показывать уведомление на переднем плане — это просто вопрос вызова или не вызова обработчика завершения

2. Я использую didReceiveRemoteNotification для выполнения некоторых действий после того, как пользователь нажмет на видимое уведомление. Бывают моменты, когда пользователь находится на переднем плане, и он получает уведомление определенного типа, которое я хочу использовать, чтобы не показывать уведомление пользователю. В этот момент я просто хочу выполнить приложение (didReceiveRemoteNotification) в обход «completionHandler ()». Надеюсь, я объяснил. Спасибо.

3. didReceiveRemoteNotification не вызывается, когда пользователь нажимает на уведомление, проверьте документацию.