Одно из двух одинаковых устройств не получает push — определите причину
Два телефона работают на одной версии приложения, бэкенд и сеть подтверждённо стабильны, push-уведомления отправляются. Один телефон получает уведомления, второй — нет. В коде приложения и на сервере между ними нет различий.
Устройство A: получает все push-уведомления нормально.
Устройство B: та же версия приложения, push-уведомлений нет.
Бэкенд: стабилен, подтверждённо шлёт на токены обоих устройств.
Сеть: стабильна на обоих устройствах.
Перечислите наиболее вероятные причины на стороне устройства и аккаунта и порядок их проверки. Определите причину.
Раз бэкенд и сеть исключены, причина на стороне устройства или аккаунта. Проверьте: отключённое разрешение на уведомления, выключенные системные или приложенческие уведомления, battery saver / Doze, убивающий фоновый процесс, устаревший или отсутствующий push-токен, отсутствие сервисов Google (Huawei → FCM-токен не выдан), другой залогиненный аккаунт, режим «Не беспокоить» или различие push по версии ОС.
- ✗Винить общий код приложения, когда различие на стороне устройства
- ✗Забывать, что разрешения, battery saver и Doze блокируют push
- ✗Упускать причину отсутствия сервисов Google (Huawei/FCM)
- →Как проверить, есть ли у устройства B валидный push-токен?
- →Почему устройство Huawei никогда не получит FCM-push?
Ловушка в формулировке: «та же версия приложения» толкает кандидата к багу в коде, но одинаковые сборки делают код наименее вероятной причиной. Раз бэкенд и сеть подтверждены, идите по цепочке устройства и аккаунта, начиная с самых дешёвых проверок.
Снимите состояние обоих устройств и сравните — расхождение локализуется сразу:
Device A Device B
notification permission granted DENIED
app notifications on off
battery optimization unrestricted optimized (Doze)
Do-Not-Disturb off on
FCM token registered yes none
Google Play services present absent (Huawei)
logged-in account user@corp other@corp
- Разрешение на уведомления для приложения отключено (самое частое).
- Системные / приложенческие уведомления выключены или канал заглушён (Android).
- Battery saver / Doze убивает фоновый процесс, который принимает push.
- Режим «Не беспокоить» / Focus подавляет оповещения.
- Устаревший или отсутствующий push-токен — устройство не зарегистрировалось или токен сменился.
- Нет сервисов Google — у Huawei нет GMS, поэтому FCM не выдаёт токен и push молча не приходит.
- Другой залогиненный аккаунт на устройстве B, не тот, на который шлют.
- Различия версии ОС в поведении фона и push.
Верный подход: сначала убедиться, что у устройства B действительно есть валидный зарегистрированный токен, затем проверить разрешения и энергосбережение на уровне ОС — и только потом подозревать что-то общее.