Push-уведомления в мобильных приложениях: как настроить и обеспечить доставку

Push-уведомления в мобильных приложениях: как настроить и обеспечить доставку мар, 20 2026

Вы когда-нибудь ждали уведомление о том, что ваш заказ готов, а оно так и не пришло? Или получали десятки уведомлений от одного приложения, пока не отключили их все? Проблема не в приложении - она в том, как настроены push-уведомления. Многие разработчики думают, что если они включили уведомления, то всё работает. Но это лишь начало. Настоящая задача - чтобы уведомление не просто отправилось, а дошло, в нужный момент, пользователю, который действительно этого ждёт.

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

Push-уведомление - это не просто сообщение. Это сложный процесс, в котором участвуют три стороны: ваше приложение, операционная система устройства и служба доставки. Когда пользователь устанавливает приложение, оно запрашивает разрешение на отправку уведомлений. Если пользователь соглашается, операционная система (iOS или Android) выдаёт уникальный токен - идентификатор устройства. Этот токен отправляется на ваш сервер, и только тогда вы можете отправлять уведомления конкретно на это устройство.

Но тут начинается самое интересное. Уведомление не летит напрямую от вашего сервера к телефону. Оно проходит через центральные службы: для iOS - это Apple Push Notification service (APNs), для Android - Firebase Cloud Messaging (FCM). Эти службы работают как посредники. Они не просто пересылают сообщение, а управляют приоритетом, экономят заряд батареи и даже могут откладывать уведомления, если устройство в режиме энергосбережения.

Разница между iOS и Android: почему одно работает, а другое - нет

На iOS пользователь должен явно согласиться на получение уведомлений. Без этого - никаких push. Это жёсткое правило. Если пользователь нажал «Нет», вы не можете больше запрашивать разрешение. Приложение просто перестаёт получать токены. На Android всё иначе: уведомления включены по умолчанию, и пользователь может отключить их позже в настройках. Но это не значит, что Android проще. Наоборот - там гораздо больше факторов, влияющих на доставку.

Android-устройства от разных производителей (Samsung, Xiaomi, Huawei) имеют свои собственные системы управления фоновыми процессами. Например, Huawei использует Huawei Push Service вместо FCM. Xiaomi и OnePlus блокируют фоновую активность приложений, чтобы сэкономить батарею. И если ваше приложение не прошло проверку на «автономности» (как это называют в китайских прошивках), оно может быть просто отключено в фоне. Даже если пользователь разрешил уведомления, система может не пускать ваше приложение к сети.

В итоге: если уведомление не пришло на Xiaomi, это не ошибка вашего кода - это политика производителя. И вы не можете это исправить. Только адаптироваться.

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

Push-уведомления - не рассылка спама. Они должны быть привязаны к конкретному действию пользователя. Вот как это работает на практике:

  • Пользователь оформил заказ → отправить уведомление «Ваш заказ №12345 принят»
  • Пользователь добавил товар в корзину, но не купил → через 2 часа: «Товар ещё в корзине - успейте купить!»
  • Пользователь не заходил в приложение 7 дней → «Мы скучаем. Вот скидка 15%»

Каждый из этих сценариев - это триггер. Триггер - это событие, которое запускает уведомление. В системах вроде Firebase или OneSignal вы создаёте триггеры через веб-интерфейс: выбираете событие (например, «заказ создан»), задаёте условия («только если заказ сделан через мобильное приложение») и пишете текст уведомления. Можно использовать переменные: {{имя}}, {{сумма}}, {{дата}} - чтобы сделать сообщение персональным.

Но самое главное: не отправляйте уведомления просто потому, что можете. Каждое уведомление должно иметь ценность. Если пользователь получает 5 уведомлений в день - он отключит их. Если получает одно в неделю, которое спасает его от ошибки или даёт выгоду - он останется.

Разобранный смартфон с логотипами брендов, каждый показывает свою блокировку уведомлений.

Типы push-уведомлений: транзакционные и маркетинговые

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

  • Подтверждение платежа
  • Статус доставки заказа
  • Смена пароля
  • Новое сообщение в чате
  • Истечение срока подписки

Эти уведомления работают даже если пользователь отключил маркетинговые. Они важны. Они спасают. Они повышают доверие.

Маркетинговые - это всё остальное: скидки, акции, новые функции, напоминания о продуктах. Они требуют явного согласия. И их нужно настраивать с умом. Например, если пользователь не заходил в приложение месяц, но ранее покупал товары на сумму больше 5000 рублей - ему можно отправить предложение с 20% скидкой. А если он только установил приложение - не надо сразу предлагать скидку. Лучше: «Добро пожаловать! Вот как начать».

Проблемы доставки: почему уведомление «отправлено», но не пришло

Самая большая ложь в мире push-уведомлений - это статус «доставлено». Сервер говорит: «Уведомление отправлено». Но на устройстве его нет. Почему?

  • Устройство в режиме полёта или без интернета
  • Приложение закрыто системой из-за экономии батареи
  • Операционная система отложила уведомление до следующего запуска приложения
  • Пользователь отключил уведомления вручную
  • Производитель устройства (например, Xiaomi) заблокировал фоновую активность

Вы не можете контролировать всё это. Но вы можете отслеживать. В FCM и APNs есть статусы доставки: «доставлено», «не доставлено», «отклонено», «не определено». Если вы не используете эти статусы - вы работаете вслепую. Вы платите за SMS-уведомления, потому что думаете, что push не дошёл. А он дошёл. Просто приложение не сообщило об этом серверу.

Решение: настройте обратную связь. Каждое уведомление, которое приходит на устройство, должно отправлять подтверждение обратно на ваш сервер. Только тогда вы будете знать, кто получил, а кто - нет. И только тогда вы сможете строить каскадные сценарии: если push не дошёл за 10 минут - отправить SMS. Если SMS не прочитан за 2 часа - отправить email. Без данных - это просто траты денег.

Как повысить доставляемость: 5 практических шагов

  1. Запрашивайте разрешение в правильный момент. Не сразу при запуске. Подождите, пока пользователь сделает что-то ценное: купил товар, сохранил избранное, добавил профиль. Тогда он скажет «Да».
  2. Используйте высокий приоритет. В FCM и APNs есть флаги «high priority». Используйте их только для транзакционных уведомлений. Маркетинговые - с низким приоритетом, чтобы не раздражать.
  3. Тестируйте на реальных устройствах. Эмуляторы не показывают, как работает FCM на Xiaomi. Потестируйте на реальном Xiaomi Redmi, Huawei P40 и iPhone 13. Каждый по-своему блокирует фон.
  4. Добавьте обратную связь. Каждое уведомление, которое приходит на устройство, должно отправлять «я получил» на ваш сервер. Без этого - вы не знаете, работает ли система.
  5. Не отправляйте уведомления, если приложение не запущено 30+ дней. Такие пользователи уже не заинтересованы. Лучше отправить им email с предложением вернуться, чем тратить ресурсы на push, который никто не увидит.
Два сценария: пользователь получает уведомление и тот же телефон в режиме энергосбережения.

Что ещё важно: интеграция с другими каналами

Push-уведомления - не отдельный канал. Они должны работать вместе с email, чатом и push на веб-сайте. Например: пользователь оставил сообщение в чате приложения. Вы отправляете push: «У вас новое сообщение». Если он не открыл приложение - через 30 минут приходит email: «Вы не ответили на сообщение от службы поддержки». Если он не открыл email - через 2 дня приходит SMS: «Ваша заявка на возврат ждёт подтверждения».

Такой каскадный подход увеличивает конверсию в 3-5 раз. Но только если вы отслеживаете, где именно пользователь перестал реагировать. Без аналитики - это просто хаос.

Платформы для настройки: что выбрать

Если вы не хотите писать код для работы с FCM и APNs, используйте готовые платформы:

  • OneSignal - простой интерфейс, поддержка iOS, Android, веб, Huawei. Хорош для стартапов.
  • Firebase Cloud Messaging - от Google. Бесплатный, мощный, но требует интеграции с backend-сервером.
  • Amazon SNS - если вы уже используете AWS. Поддерживает все платформы, но сложнее в настройке.
  • Pushwoosh - сильный в сегментации, аналитике и A/B тестах. Подходит для бизнеса с высокой активностью пользователей.

Не выбирайте платформу по цене. Выбирайте по тому, как она показывает статистику доставки. Если вы не видите, сколько уведомлений реально дошло - вы теряете деньги.

Что делать, если push не работает

Если уведомления перестали приходить - проверьте:

  • Токен устройства - актуален ли он? (переустановка приложения сбрасывает токен)
  • Сертификаты APNs - не истёк ли срок действия?
  • Сервис FCM - есть ли ошибки в логах?
  • Настройки батареи на устройстве - не заблокировано ли приложение в фоне?
  • Пользователь отключил уведомления вручную? (проверьте через настройки системы)

Самая частая причина - изменение профиля устройства. Пользователь обновил систему, переставил приложение, включил режим энергосбережения. И всё - токен устарел. Решение: в приложении нужно проверять токен при каждом запуске и отправлять его на сервер заново.

Можно ли отправить push-уведомление без установки приложения?

Нет. Push-уведомления работают только через установленное приложение. Без него нет токена устройства, и служба доставки (Apple или Google) не знает, куда отправить сообщение. Если пользователь не установил приложение - уведомление не придёт. Вместо этого можно использовать email или SMS, но это уже не push.

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

Huawei больше не использует Google Mobile Services, включая Firebase Cloud Messaging. Вместо этого нужно использовать Huawei Push Service. Если вы не интегрировали его в приложение, уведомления не будут приходить на устройства Huawei. Решение - добавить поддержку Huawei Push Service в вашем коде и настроить отдельный токен в консоли Huawei.

Как проверить, дошло ли уведомление?

В FCM и APNs есть статусы доставки: «доставлено», «не доставлено», «отклонено». Но это статус на стороне службы. Чтобы знать, что пользователь реально увидел уведомление - нужно, чтобы приложение на устройстве отправило подтверждение обратно на ваш сервер. Без этого вы не знаете, прочитал ли пользователь сообщение или просто проигнорировал его.

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

На iOS - нет. ОС не позволит отправить уведомление без явного согласия. На Android - технически можно, если вы не запрашиваете разрешение, но пользователь может отключить уведомления вручную. И в любом случае, если вы отправите уведомление без разрешения - пользователь удалит приложение. Это не техническая, а психологическая ошибка.

Сколько push-уведомлений в день - норма?

Нет универсального числа. Но исследования показывают: более 3 уведомлений в день приводят к отключению всех push-уведомлений у 40% пользователей. Лучше 1-2 в неделю, но релевантных. Например, 1 транзакционное уведомление (о заказе) + 1 маркетинговое (о скидке) в неделю - это максимум, который пользователь воспринимает как полезный, а не как спам.