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 практических шагов
- Запрашивайте разрешение в правильный момент. Не сразу при запуске. Подождите, пока пользователь сделает что-то ценное: купил товар, сохранил избранное, добавил профиль. Тогда он скажет «Да».
- Используйте высокий приоритет. В FCM и APNs есть флаги «high priority». Используйте их только для транзакционных уведомлений. Маркетинговые - с низким приоритетом, чтобы не раздражать.
- Тестируйте на реальных устройствах. Эмуляторы не показывают, как работает FCM на Xiaomi. Потестируйте на реальном Xiaomi Redmi, Huawei P40 и iPhone 13. Каждый по-своему блокирует фон.
- Добавьте обратную связь. Каждое уведомление, которое приходит на устройство, должно отправлять «я получил» на ваш сервер. Без этого - вы не знаете, работает ли система.
- Не отправляйте уведомления, если приложение не запущено 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 маркетинговое (о скидке) в неделю - это максимум, который пользователь воспринимает как полезный, а не как спам.