← Назад к вопросам

Какие знаешь типы Notification?

1.0 Junior🔥 191 комментариев
#Архитектура и паттерны

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Типы Notification в iOS/macOS

В экосистеме Apple различают два основных типа нотификаций: локальные (UNNotificationRequest) и удалённые (push-уведомления). Каждый тип имеет свои особенности, механизмы работы и сценарии использования.

1. Локальные уведомления (Local Notifications)

Локальные уведомления планируются и доставляются непосредственно на устройстве без необходимости в серверной инфраструктуре. Они идеальны для напоминаний, таймеров или событий, основанных на времени/местоположении.

Ключевые компоненты:

  • UNNotificationRequest — запрос на показ уведомления.
  • UNNotificationContent — содержимое уведомления (заголовок, тело, звук, badge).
  • UNNotificationTrigger — триггер, определяющий условие показа.

Пример создания локального уведомления:

import UserNotifications

func scheduleLocalNotification() {
    let content = UNMutableNotificationContent()
    content.title = "Напоминание"
    content.body = "Пора сделать перерыв!"
    content.sound = .default

    let trigger = UNTimeIntervalNotificationTrigger(
        timeInterval: 60 * 60, // Через 1 час
        repeats: false
    )

    let request = UNNotificationRequest(
        identifier: "breakReminder",
        content: content,
        trigger: trigger
    )

    UNUserNotificationCenter.current().add(request)
}

Типы триггеров для локальных уведомлений:

  • Временной (UNTimeIntervalNotificationTrigger) — срабатывает через заданный интервал.
  • Календарный (UNCalendarNotificationTrigger) — срабатывает в конкретную дату/время (например, каждый день в 9:00).
  • Географический (UNLocationNotificationTrigger) — срабатывает при входе/выходе из региона (требует разрешения на использование геолокации).

2. Удалённые (Push) уведомления (Remote Notifications)

Push-уведомления инициируются внешним сервером и доставляются через сервис Apple Push Notification Service (APNS). Они используются для рассылки обновлений, новостей или персонализированного контента.

Ключевые особенности:

  • Требуют сертификатов/ключей в Apple Developer Account.
  • Используют APNS как промежуточное звено между сервером и устройством.
  • Поддерживают фоновую доставку и silent-уведомления (без интерфейса).

Пример обработки push-уведомления в AppDelegate:

func application(_ application: UIApplication, 
                 didReceiveRemoteNotification userInfo: [AnyHashable: Any]) {
    // Обработка данных уведомления
    guard let aps = userInfo["aps"] as? [String: AnyObject] else { return }
    print("Получено push-уведомление: \(aps)")
}

Расширенные возможности push-уведомлений:

  • Интерактивные действия (категории) — кнопки быстрого ответа.
  • Медиавложения — изображения, видео, аудио (через UNNotificationServiceExtension).
  • Шифрование и безопасность через токены устройств (device token).
  • Фоновая доставка данных (content-available: 1) для обновления контента без показа пользователю.

Сравнительная таблица

КритерийЛокальные уведомленияPush-уведомления
ИсточникУстройствоВнешний сервер
Требует интернетНетДа (для доставки)
Сертификаты APNSНе нужныОбязательны
ТриггерыВремя, дата, местоположениеЛюбое событие на сервере
ГибкостьОграничена локальными условиямиНе ограничена

Важные концепции фреймворка UserNotifications

  • UNUserNotificationCenter — центральный объект для управления всеми уведомлениями.
  • Authorization — обязательный запрос разрешений у пользователя.
  • Notification Extensions (UNNotificationServiceExtension, UNNotificationContentExtension) — для модификации контента и кастомных интерфейсов.
  • Handling Actions — обработка действий пользователя через UNNotificationResponse.

Пример запроса разрешений:

UNUserNotificationCenter.current().requestAuthorization(
    options: [.alert, .sound, .badge]
) { granted, error in
    DispatchQueue.main.async {
        if granted {
            UIApplication.shared.registerForRemoteNotifications()
        }
    }
}

На практике оба типа часто комбинируются: push-уведомление может инициировать серию локальных напоминаний, а локальные уведомления — дополнять push-рассылки для офлайн-сценариев. Современная архитектура уведомлений в iOS обеспечивает высокую степень кастомизации и интеграции, оставаясь критически важным каналом взаимодействия с пользователем.

Какие знаешь типы Notification? | PrepBro