Можно ли взаимодействовать с пуш уведомлениями и какие действия доступны
Что проверяют
Знаете ли вы, что пуш это не только текст в шторке, а набор сценариев со своими состояниями приложения, и умеете ли их тестировать, включая автоматизацию. Следом обычно спрашивают, как проверить переход по пушу на нужный экран, когда приложение выгружено из памяти.
Как отвечать
Сначала перечислите, что пользователь может сделать с уведомлением:
- нажать: приложение открывается, в идеале на конкретном экране по deep link из payload;
- кнопки действий: на Android до трёх кнопок, на iOS действия задаются категориями (
UNNotificationCategory) и видны в развёрнутом уведомлении; - ответить прямо из уведомления: на Android через
RemoteInput, на iOS через текстовое действие; - смахнуть: уведомление закрывается, приложение может это отследить;
- управлять: отключить канал уведомлений (Android 8+), выключить всё в настройках, увидеть пуши сгруппированными.
Дальше матрица проверок. Состояние приложения: на переднем плане (система часто не показывает пуш, его обрабатывает код), в фоне, выгружено. Разрешения: запрос на iOS, runtime-разрешение POST_NOTIFICATIONS на Android 13+, отказ и повторное включение. Авторизация: пуш пришёл, а пользователь разлогинен. Несколько пушей подряд, группировка, счётчик на иконке, режим «Не беспокоить».
Инструменты: тестовая отправка из консоли FCM, на симуляторе iOS xcrun simctl push с JSON-файлом payload, на Android adb shell am start для проверки deep link отдельно от пуша. В автоматизации Appium с драйвером UiAutomator2 открывает шторку командой mobile: openNotifications, на iOS её тянут жестом через XCUITest. Espresso до шторки не дотягивается, для неё нужен UI Automator.
Где спотыкаются
Проверяют только приложение в фоне. Самые частые баги живут в холодном старте из выгруженного состояния и на переднем плане.
Не различают доставку и отображение. Пуш мог дойти, но не показаться из-за выключенного канала, и это не баг бэкенда.
Забывают про кривой payload: пустой deep link, ссылку на удалённый объект, неизвестный тип уведомления. Приложение должно открыться на безопасном экране, а не упасть.