Ответ
Firebase Cloud Messaging (FCM) использует Apple Push Notification service (APNs) в качестве транспортного канала для iOS-устройств. Это двухэтапный процесс:
Основной механизм доставки:
- Регистрация устройства: iOS-приложение запрашивает у APNs уникальный device token.
- Передача токена в FCM: Приложение передает этот токен в Firebase через SDK (
Messaging.messaging().apnsToken). - Отправка уведомления: Ваш backend-сервер отправляет сообщение на конечную точку FCM, указывая целевой токен устройства.
- Маршрутизация через APNs: FCM перенаправляет уведомление в APNs, которое напрямую доставляет его на устройство.
Пример кода регистрации токена:
func application(_ application: UIApplication,
didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
// Передаем токен APNs в Firebase
Messaging.messaging().apnsToken = deviceToken
}
Типы сообщений FCM:
- Notification messages: Содержат предопределенные поля (
title,body). Система iOS отображает их автоматически, когда приложение в фоне/закрыто. Обрабатываются APNs. - Data messages: Содержат произвольные ключ-значение данные. Всегда доставляются в приложение для обработки в фоне (
application(_:didReceiveRemoteNotification:fetchCompletionHandler:)), даже если оно свернуто или закрыто.
Важно: Для локальных уведомлений (триггерных по времени или местоположению) используется UNUserNotificationCenter, а не FCM.