Push-уведомления в мобильной разработке — суть, какие бывают и как работают

Автор: IT Sectr Опубликовано: 2026-03-19 Время чтения: 8 мин

Push-уведомления — это сообщения, отправляемые сервером на мобильное устройство даже при закрытом приложении. По данным Google Firebase, 2024, Push-уведомления обрабатываются через специализированные сервисы — FCM на Android и APNS на iOS, которые поддерживают доставку в реальном времени миллионам устройств одновременно. Они стали неотъемлемой частью пользовательского опыта в современных мобильных приложениях.

Главное

  • Push-уведомления — сообщения от сервера, доставляемые через FCM или APNS.
  • FCM (Firebase Cloud Messaging) — основной сервис для Android с поддержкой iOS.
  • APNS (Apple Push Notification Service) — собственный сервис Apple для iOS и macOS.
  • Типы уведомлений делятся на уведомления с текстом, media-уведомления и silent-уведомления.
  • Токены устройств — уникальные идентификаторы для адресной доставки Push-сообщений.

Что такое Push-уведомления?

Push-уведомления — это короткие сообщения, которые сервер приложения отправляет на устройство пользователя без его явного запроса. Они отображаются в виде баннеров, значков на иконке или звуковых сигналов, привлекая внимание пользователя к приложению и информируя о важных событиях.

Определение и назначение

Push-уведомление состоит из заголовка, тела сообщения и необязательных данных (payload). В отличие от SMS, Push-уведомления бесплатны для пользователя и доставляются через инфраструктуру облачных сервисов — FCM для Android и APNS для iOS. Основные цели Push-уведомлений: повышение вовлечённости, информирование о событиях и возврат пользователя в приложение.

Статистика использования показывает, что правильно настроенные Push-уведомления увеличивают retention приложения на 30-60%. Однако избыточная частота уведомлений приводит к отпискам — более 60% пользователей отключают уведомления, если их отправляют чаще трёх раз в день.

Архитектура Push-системы

Push-система включает три компонента: сервер приложения (app server), платформенный сервис (FCM/APNS) и клиентское приложение на устройстве. Сервер отправляет запрос платформенному сервису, который доставляет уведомление на целевое устройство через постоянное соединение с ОС.

Как работают Push-уведомления?

Механизм доставки Push-уведомлений основан на постоянном соединении между устройством и платформенным сервисом. Операционная система поддерживает зашифрованный канал связи, через который проходят все Push-сообщения.

Регистрация и получение токена

При первом запуске приложение запрашивает разрешение на отправку уведомлений и получает уникальный токен устройства от FCM или APNS. Этот токен — строка длиной до 4 КБ, однозначно идентифицирующая экземпляр приложения. Токен меняется при переустановке приложения или восстановлении устройства из резервной копии.

kotlin
class FirebaseMessagingService :
    FirebaseMessagingService() {

    override fun onNewToken(token: String) {
        sendTokenToServer(token)
    }

    override fun onMessageReceived(
        message: RemoteMessage
    ) {
        showNotification(message.notification)
    }
}

Отправка через сервер приложения

Сервер приложения отправляет HTTP-запрос к FCM API или APNS API, указывая целевой токен, заголовок, тело и дополнительные данные. Платформенный сервис отвечает статусом доставки: success, invalid token (устройство удалило приложение) или rate-limited (превышена частота отправки).

js
fetch("https://fcm.googleapis.com/fcm/send", {
    method: "POST",
    headers: {
        "Authorization": "key=AIzaSy...",
        "Content-Type": "application/json"
    },
    body: JSON.stringify({
        to: "device_token_here",
        notification: {
            title: "Новое сообщение",
            body: "У вас новое уведомление!"
        }
    })
})

FCM vs APNS: сравнение платформ

Выбор между FCM и APNS зависит от целевой платформы. FCM поддерживает Android и iOS, APNS — только экосистему Apple. Рассмотрим ключевые различия, важные для разработки кросс-платформенных мобильных приложений.

Firebase Cloud Messaging (FCM)

FCM — сервис Google, работающий поверх Google Play Services. Он поддерживает две схемы доставки: уведомления с автоматическим отображением (display notifications) и data-уведомления, которые приложение обрабатывает самостоятельно. FCM бесплатен и не имеет ограничений на количество отправляемых сообщений.

Apple Push Notification Service (APNS)

APNS — сервис Apple с поддержкой мультимедийных вложений (изображения, видео, аудио) размером до 10 МБ. Для отправки через APNS требуется TLS-сертификат или ключ аутентификации. APNS ограничивает частоту отправки на одно устройство — не более 150 уведомлений в минуту, после чего включает rate limiting.

ХарактеристикаFCMAPNS
ПлатформыAndroid, iOS, WebiOS, macOS, watchOS
ТребованияGoogle Play ServicesApple Developer Program
Медиадо 4 КБ (data)до 10 МБ (attachments)
Приоритетnormal/highimmediate/power-saving
Стоимостьбесплатнобесплатно (требуется аккаунт)

Типы Push-уведомлений

Push-уведомления классифицируются по способу отображения и назначению. Понимание типов помогает выбрать правильную стратегию для каждого сценария взаимодействия с пользователем.

Уведомления с текстом (Display Notifications)

Самый распространённый тип — отображаемое уведомление с заголовком и телом. ОС автоматически показывает его в системной шторке, на экране блокировки и в виде баннера. Разработчик может настроить звук, вибрацию, значок на иконке и action-кнопки для прямых действий (ответить, открыть, отклонить).

Уведомления с данными (Data Notifications)

Data-уведомления содержат только payload без визуального отображения. Приложение обрабатывает их в фоне: синхронизирует данные, обновляет кэш или запускает загрузку. На Android data-уведомления доставляются гарантированно, на iOS — только при активном приложении или через background fetch.

Мультимедийные и rich-уведомления

Современные мобильные ОС поддерживают расширенные и media-уведомления с изображениями, GIF, видео и аудио. На iOS это реализовано через UNNotificationAttachment, на Android — через BigPictureStyle и InboxStyle для кастомизации вида уведомления в системной шторке.

Silent (тихие) уведомления

Silent-уведомления не отображаются пользователю и используются для фоновой синхронизации. На iOS они имеют высокий приоритет для задач типа обновления данных перед открытием приложения. Android трактует их как data-уведомления с минимальным приоритетом.

Настройка Push-уведомлений в проекте

Настройка Push-уведомлений требует действий на уровне инфраструктуры, серверной части и клиентского кода. Рассмотрим типовой процесс для кросс-платформенного мобильного проекта.

Настройка FCM для Android

Для Android необходимо создать проект в Firebase Console, добавить google-services.json в проект и настроить FirebaseMessagingService. Токен устройства получается через FirebaseInstanceId или FirebaseMessaging.getInstance().token, после чего отправляется на сервер через API при первом запуске или при его изменении.

Настройка APNS для iOS

Для iOS требуется подписка на Apple Developer Program, создание Push-сертификата или APNS-ключа в Developer Portal, и включение Capability Push Notifications в Xcode. Регистрация на уведомления выполняется через UIApplication.shared.registerForRemoteNotifications с получением deviceToken в AppDelegate.

swift
import UIKit
import UserNotifications

@main
class AppDelegate: UIResponder,
    UIApplicationDelegate {

    func application(
        _ application: UIApplication,
        didRegisterForRemoteNotificationsWithDeviceToken
        deviceToken: Data
    ) {
        let token = deviceToken
            .map { String.format("%02x", $0) }
            .joined()
        // отправить token на свой сервер
    }
}

Серверная отправка

На серверной стороне Push-уведомления отправляются через REST API или Admin SDK. Для FCM используется Firebase Admin SDK (доступен для Node.js, Java, Python, Go), для APNS — pusher-библиотеки (pushy для Java, apn2 для Node.js). Рекомендуется хранить токены в базе данных с меткой времени последнего обновления.

Безопасность Push-уведомлений

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

Шифрование payload

Payload Push-уведомления может содержать персональные данные пользователей: имена, суммы транзакций, ссылки на сообщения. Даже если канал связи между FCM/APNS и устройством зашифрован, данные могут быть перехвачены на уровне приложения при перехвате уведомления сторонним ПО. Рекомендуется шифровать чувствительный payload на сервере алгоритмом AES-256 и дешифровать его на устройстве с помощью ключа, хранящегося в Keychain (iOS) или EncryptedSharedPreferences (Android).

Валидация токенов на сервере

Токен устройства — это идентификатор сессии, который может быть скомпрометирован при взломе устройства или перехвате трафика. Сервер приложения должен проверять токены перед отправкой: сверять их с БД, отслеживать неактивные токены и удалять их при повторяющихся ошибках InvalidToken. FCM и APNS возвращают статус InvalidRegistration для неверных токенов — не игнорируйте его.

Защита от спама уведомлениями

Без контроля частоты Push-уведомления могут стать инструментом спама, который раздражает пользователей и снижает retention. Установите на сервере лимиты: не более 5 уведомлений в час одному пользователю и не более 3 одинаковых сообщений. Для транзакционных уведомлений (подтверждение заказа, смена пароля) лимиты могут быть выше — до 10 в час, так как они несут критически важную информацию. Используйте rate limiting на уровне API отправки, чтобы злоумышленник не смог вызвать массовую рассылку через ваш сервер.

Часто задаваемые вопросы

Можно ли отправлять Push-уведомления без FCM на Android?

Да, через прямое подключение к APNS не поддерживается на Android — для устройств без Google Play Services используются альтернативы вроде Huawei Mobile Services (HMS) и собственные WebSocket-соединения. Однако FCM остаётся стандартом для большинства приложений благодаря бесплатности и надёжности.

Как работает доставка Push при выключенном интернете?

FCM и APNS сохраняют последнее уведомление на своих серверах и доставляют его при восстановлении соединения. На каждом устройстве хранится только последнее уведомление от каждого приложения, поэтому при длительном отсутствии сети теряются промежуточные сообщения.

Почему Push-уведомления не приходят на iOS?

Наиболее частые причины — истекший Push-сертификат APNS (действителен 1 год), неверный токен устройства, отключённые уведомления в настройках или включённый режим энергосбережения. Проверьте сертификат в Apple Developer Console и убедитесь, что приложение запрашивает разрешение через UNUserNotificationCenter.

Как отследить, что пользователь открыл Push-уведомление?

На Android используйте PendingIntent в NotificationCompat.Builder с отслеживанием открытия через Intent. На iOS — метод UNUserNotificationCenterDelegate.userNotificationCenter(_:didReceive:withCompletionHandler:). FCM предоставляет отчёты по доставке и открытиям для каждого отправленного уведомления.

Влияют ли Push-уведомления на заряд батареи?

Незначительно — Push-уведомления не держат постоянное соединение; ОС использует единый системный канал для всех приложений, что минимизирует общее энергопотребление. Частая отправка (каждые 5 минут) потребляет больше энергии на пробуждение устройства и выход из спящего режима. Silent-уведомления на iOS расходуют больше заряда из-за активации приложения в фоне для обработки полученных данных.

Итоги

  • Push-уведомления — сообщения сервера на устройство через FCM или APNS.
  • Токен устройства — уникальный идентификатор для адресной доставки Push.
  • FCM поддерживает Android, iOS и Web; APNS — только экосистему Apple.
  • Data-уведомления обрабатываются в фоне без отображения пользователю.
  • Media-уведомления на iOS поддерживают вложения до 10 МБ, на Android — через расширенные стили.
  • Сертификаты APNS требуют ежегодного обновления в Apple Developer Portal.
  • Rate limiting FCM и APNS защищает пользователей от спама уведомлениями, ограничивая частоту отправки на каждое устройство.

Мы разработаем мобильное приложение под ключ

IT Sectr создаёт приложения для iOS и Android для стартапов и бизнеса с 2017 года. Мы проконсультируем вас и предложим наилучшее решение.

Обсудить проект

Читайте также