Как устроен FCM
FCM — посредник между вашим сервером и устройством пользователя. Сам сервер не может «толкнуть» сообщение напрямую: нет прямого соединения с конкретным смартфоном. FCM решает эту задачу: поддерживает постоянное соединение с миллиардами устройств и маршрутизирует сообщения.
Ваш сервер → FCM API → Google серверы → Устройство (Android / браузер)
→ APNs → Устройство (iOS)
Маршрутизация по push-токену: уникальный идентификатор устройства в экосистеме FCM. При первом запуске приложение получает токен и должно сохранить его на сервере.
Типы сообщений FCM
| Тип | Показывается как | Приложение | Подходит для |
|---|---|---|---|
| Notification message | Системный баннер автоматически | Не нужно | Простые уведомления, промо |
| Data message | Приложение решает | Должно быть активно или фоновый сервис | Rich Push, кастомная логика |
| Комбинированное | Системный баннер + данные | Фоновый обработчик | Диплинк + уведомление |
FCM в e-commerce
Типичные сценарии для push через FCM:
- Статус заказа. «Ваш заказ передан курьеру» — транзакционные сообщения, высокий приоритет доставки.
- Персональные акции. Скидка на категорию по affinity-профилю. Триггер — ручная или автоматическая кампания.
- Price drop. Цена снизилась на товар из вишлиста или просматриваемый ранее.
- Back in stock. Товар из вишлиста снова доступен.
Важно: quality delivery зависит от нескольких факторов одновременно: актуальный токен, правильный TTL, корректный приоритет (HIGH для важных, NORMAL для маркетинговых). Проверяйте delivery rate в FCM Console — норма > 85%.
Управление токенами
Самая распространённая техническая проблема с FCM — устаревшие токены в базе. Как избежать:
- Подписывайтесь на
onTokenRefreshи обновляйте токен в базе при каждом изменении - При получении ошибки
NotRegisteredилиInvalidRegistration— немедленно удаляйте токен - Проводите регулярную чистку токенов, которые не использовались более 3 месяцев
- Храните дату последнего обновления токена для диагностики