Открыть сервис

Apple Push Notification Service

Apple Push Notification Service (APNs) — это облачный сервис, разработанный компанией Apple Inc., предназначенный для доставки push-уведомлений от сторонних приложений и серверов на устройства под управлением операционных систем iOS, iPadOS, macOS, watchOS и tvOS. APNs выступает в качестве центрального шлюза, который принимает запросы от серверов разработчиков (провайдеров) и направляет их на конкретные устройства Apple, обеспечивая тем самым возможность получения уведомлений даже в фоновом режиме или при закрытом приложении.

История

Сервис APNs был анонсирован 9 июня 2008 года на Всемирной конференции разработчиков Apple (WWDC) вместе с выходом iOS 2.0. Изначально он предназначался для iPhone OS и позволял приложениям получать уведомления без необходимости постоянного фонового опроса серверов, что существенно экономило заряд батареи и трафик. До появления APNs разработчики были ограничены в возможностях доставки информации пользователям в реальном времени.

В последующие годы сервис претерпел несколько значительных обновлений. В 2015 году, с выходом iOS 9, Apple представила новую версию протокола APNs — HTTP/2-based API, которая заменила устаревший бинарный протокол. Это позволило использовать современные стандарты шифрования и повысить надёжность доставки. В 2016 году, с выпуском iOS 10, была добавлена поддержка расширенных уведомлений, включая медиавложения (изображения, аудио, видео), а также возможность интерактивных действий без открытия приложения. В 2020 году, в iOS 14, Apple ввела функцию «Сводка уведомлений», которая повлияла на то, как APNs доставляет не срочные уведомления.

Архитектура и принцип работы

APNs функционирует на основе клиент-серверной архитектуры, где ключевыми участниками являются:

  • Устройство Apple (клиент): получает уведомления и отображает их пользователю.
  • Сервер разработчика (провайдер): отправляет запросы на отправку уведомлений через защищённое соединение.
  • Сервер APNs: принимает запросы, обрабатывает их и направляет на целевые устройства.

Процесс доставки

  1. Регистрация устройства: при первом запуске приложения, поддерживающего push-уведомления, iOS запрашивает у пользователя разрешение на получение уведомлений. В случае согласия, устройство устанавливает постоянное TLS-соединение с сервером APNs и получает уникальный токен устройства (device token) — 32-байтовую последовательность, которая идентифицирует конкретное приложение на конкретном устройстве.
  2. Передача токена провайдеру: приложение передаёт полученный токен на сервер разработчика (обычно через собственный API). Токен используется для адресации будущих уведомлений.
  3. Формирование и отправка запроса: провайдер формирует push-уведомление в формате JSON, указывает токен устройства, заголовок, тело уведомления, звук, бейдж и другие параметры. Запрос отправляется через HTTP/2-соединение, защищённое TLS 1.2 или выше, на сервер APNs.
  4. Обработка APNs: сервер APNs проверяет валидность токена, подлинность провайдера (через сертификат или ключ аутентификации) и доставляет уведомление на устройство.
  5. Доставка на устройство: устройство получает уведомление и отображает его в соответствии с настройками пользователя (например, в виде баннера, на экране блокировки или в Центре уведомлений). Если приложение активно, уведомление может быть передано непосредственно в приложение через системный callback.

Протоколы и безопасность

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

  • HTTP/2 API (основной, с 2015 года): работает на порту 443, использует JSON-формат для тела запроса. Поддерживает потоковую передачу, мультиплексирование и сжатие заголовков.
  • Устаревший бинарный протокол (на порту 2197): больше не рекомендуется к использованию, но может поддерживаться для обратной совместимости.

Для аутентификации провайдера используются два метода:

  • Сертификат SSL/TLS: провайдер получает сертификат от Apple (через портал разработчика) и использует его для установки защищённого соединения.
  • Токен аутентификации (JWT): провайдер генерирует JSON Web Token, подписанный закрытым ключом, который связан с учётной записью разработчика. Этот метод считается более гибким и безопасным, так как не требует управления сертификатами.

Все соединения между провайдером, APNs и устройством шифруются с использованием TLS. Сами уведомления хранятся на серверах APNs в зашифрованном виде и не анализируются Apple.

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

APNs поддерживает несколько типов уведомлений, которые различаются по способу отображения и функциональности:

  • Alert-уведомления: текстовые сообщения, отображаемые в виде баннера или на экране блокировки. Могут содержать заголовок, подзаголовок, тело и кнопки действий.
  • Sound-уведомления: воспроизведение звукового файла, указанного в уведомлении.
  • Badge-уведомления: отображение числа на значке приложения (например, количество непрочитанных сообщений).
  • Media-уведомления: расширенные уведомления, которые могут содержать изображения, аудио или видео (доступны с iOS 10 и macOS 10.14).
  • Silent-уведомления: фоновые уведомления, которые не отображаются пользователю, но позволяют приложению выполнить код в фоне (например, обновить данные). Требуют специального разрешения в настройках приложения.
  • Интерактивные уведомления: позволяют пользователю выполнять действия (например, ответить на сообщение, отметить задачу как выполненную) без открытия приложения.

Ограничения и требования

APNs накладывает ряд ограничений на разработчиков и провайдеров:

  • Размер уведомления: максимальный размер полезной нагрузки (payload) для уведомлений с alert-текстом — 4 КБ (4096 байт). Для silent-уведомлений — 5 КБ.
  • Частота отправки: Apple не устанавливает строгих лимитов на количество запросов, но рекомендует избегать массовой рассылки уведомлений, которая может быть расценена как спам. При превышении определённых порогов (например, более 1000 запросов в секунду на один токен) APNs может временно блокировать провайдера.
  • Токен устройства: токен может меняться при переустановке приложения, сбросе настроек устройства или обновлении iOS. Провайдер должен регулярно обновлять список токенов.
  • Срок действия уведомления: провайдер может указать время жизни уведомления (apns-expiration). Если устройство недоступно в течение этого времени, уведомление не будет доставлено.
  • Поддержка фонового режима: silent-уведомления не гарантируют доставку, если устройство находится в режиме низкого энергопотребления или если приложение не имеет соответствующих разрешений.

Применение и значение

APNs является ключевым компонентом экосистемы Apple, обеспечивающим:

  • Мгновенную связь: мессенджеры (iMessage, WhatsApp, Telegram), социальные сети (Facebook, Instagram) и почтовые клиенты используют APNs для доставки сообщений.
  • Обновление контента: новостные приложения, подкасты и стриминговые сервисы (Apple Music, Spotify) уведомляют пользователей о новом контенте.
  • Напоминания и календари: приложения для планирования (Apple Calendar, Todoist) отправляют уведомления о предстоящих событиях.
  • Мониторинг и IoT: приложения для умного дома (например, управление замками, камерами) используют silent-уведомления для передачи данных в фоне.
  • Маркетинг и аналитика: push-уведомления используются для ретаргетинга и информирования пользователей об акциях, хотя Apple ограничивает их использование в рамках политики конфиденциальности.

Критика и ограничения

Несмотря на широкое распространение, APNs подвергается критике по нескольким направлениям:

  • Зависимость от серверов Apple: полная централизация сервиса означает, что сбои в работе APNs (например, в 2016 году, когда из-за ошибки конфигурации уведомления не доставлялись в течение нескольких часов) могут парализовать работу тысяч приложений.
  • Ограничения на размер и частоту: жёсткие лимиты на payload и частоту отправки могут быть неудобны для приложений, требующих передачи больших объёмов данных (например, для игр или систем видеонаблюдения).
  • Проблемы с конфиденциальностью: хотя Apple утверждает, что не читает содержимое уведомлений, сам факт того, что все уведомления проходят через серверы Apple, вызывает опасения у некоторых пользователей и правозащитников. В 2021 году Apple ввела функцию «Защита конфиденциальности в почте», которая, однако, не затрагивает APNs напрямую.
  • Неравномерность доставки: на устройствах с низким зарядом батареи или в режиме «Не беспокоить» уведомления могут задерживаться или не доставляться вовсе.

Интересные факты

  • APNs обрабатывает более 7 триллионов push-уведомлений в год (данные Apple на 2022 год).
  • Токен устройства генерируется на основе уникального идентификатора устройства (UID) и идентификатора приложения (Bundle ID), что делает его практически невозможным для подделки.
  • В 2019 году Apple представила функцию «Push to Talk» (PTT), которая использует APNs для мгновенной передачи голосовых сообщений в приложениях, таких как Walkie-Talkie на Apple Watch.
  • APNs не поддерживает отправку уведомлений на устройства, находящиеся в режиме «В самолёте» или при отключённом интернете — уведомления накапливаются на сервере и доставляются при восстановлении соединения.

Источники

  • Apple Developer Documentation: «Push Notifications» (developer.apple.com/notifications)
  • Apple WWDC 2015 Session 720: «What’s New in Push Notifications»
  • Apple WWDC 2016 Session 707: «Advanced Notifications»
  • «iOS and iPadOS Security Guide» (Apple, 2023)
  • Статья «Apple Push Notification Service» в английской Википедии (версия от 2024 года)

Meta (организация признана экстремистской, деятельность запрещена в РФ*) Platforms Inc. — организация признана экстремистской и запрещена на территории Российской Федерации.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →