#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 не вызывается, когда пользователь нажимает на уведомление, проверьте документацию.