Какие особенности работы пуш уведомлений при разных состояниях приложения: свернуто, в фоне, заблокирован экран
Что проверяют
Знаете ли вы, что поведение пуша зависит от платформы, типа сообщения и настроек устройства, и умеете ли вывести из этого тест-кейсы. Следом обычно просят рассказать, как проверить переход по тапу в каждом из состояний.
Как отвечать
Разделите состояния точнее, чем в вопросе: приложение на экране, свёрнуто, выгружено системой, закрыто пользователем, экран заблокирован.
- на переднем плане: на iOS баннер по умолчанию не показывается, приложение решает само в
userNotificationCenter(_:willPresent:withCompletionHandler:). На Android сообщение FCM приходит вonMessageReceived, и если приложение не создаст уведомление, пользователь ничего не увидит; - свёрнуто или в фоне: уведомление рисует система. На Android это верно для сообщения с блоком
notification, а data-сообщение снова уходит вonMessageReceived, и отрисовка на совести приложения; - закрыто: после смахивания из списка задач iOS показывает обычные пуши, но не доставляет фоновые. На Android после «Остановить» в настройках не приходит ничего до ручного запуска;
- заблокированный экран: показ зависит от настройки превью на iOS (всегда, после разблокировки, никогда) и от
visibilityуведомления и режима скрытия личного контента на Android. Плюс режимы фокуса, «Не беспокоить» и Doze.
Отсюда матрица проверок: каждое состояние на обеих платформах, тап с переходом на нужный экран, в том числе с холодного старта, действия из уведомления, счётчик на иконке, группировка. Отдельно разрешения: на Android 13 и новее это runtime-разрешение POST_NOTIFICATIONS, а выключенный канал уведомлений гасит пуши молча.
Где спотыкаются
Путают «свёрнуто» и «закрыто пользователем» и получают невоспроизводимые баги: у этих состояний разная доставка.
Проверяют только появление баннера. Частые дефекты в другом: по тапу открывается главный экран вместо карточки или приложение падает при холодном старте.
Тестируют на одном устройстве. Оболочки производителей с агрессивной экономией батареи режут фоновую работу, и пуши теряются там, где на эталонном телефоне всё приходит.