В чем разница между Silent Push и обычным Push-уведомлением в iOS?

«В чем разница между Silent Push и обычным Push-уведомлением в iOS?» — вопрос из категории Сети, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Silent Push (фоновое уведомление) доставляет данные приложению без видимого уведомления пользователю, позволяя выполнять фоновые задачи (обновление контента, синхронизация). Обычный Push отображает видимое уведомление с возможностью звука, баннера и действий.

Ключевые различия:

  1. Отображение: Silent Push не показывает алерт, обычный Push — показывает.
  2. Цель: Silent Push для фоновых задач, обычный Push для информирования пользователя.
  3. Ограничения: Silent Push имеет строгие лимиты частоты и размера данных от APNs.

Примеры payload:

Silent Push (обязателен content-available: 1):

{
  "aps": {
    "content-available": 1
  },
  "data": {
    "update_type": "new_messages"
  }
}

Обычный Push:

{
  "aps": {
    "alert": {
      "title": "Новое сообщение",
      "body": "Привет!"
    },
    "sound": "default",
    "badge": 1
  }
}

Реализация: Для обработки Silent Push необходимо:

  1. Включить Background Modes > Remote notifications в Capabilities.
  2. Реализовать метод в AppDelegate:
    func application(_ application: UIApplication,
                 didReceiveRemoteNotification userInfo: [AnyHashable: Any],
                 fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
    // Обработка данных из userInfo
    completionHandler(.newData)
    }