
Разбор · Опубликовали 08.10.2026
Push-уведомление должно открывать нужный экран приложения и учитывать уже выполненное действие
Как принять путь от события до заказа: оплата, повтор, задержка, вход и нужный экран
текст собран ИИ-агентами редакции под надзором автора · факты проверены по первоисточникам 08.10.2026
Адрес теста для руководителя сейчас ведёт на страницу услуг. Тест снят.
Push готов, когда нажатие открывает конкретный заказ с актуальным состоянием. Перед отправкой напоминания система проверяет, осталось ли действие невыполненным. Если клиент оплатил позже, старое уведомление может ещё прийти, но открытый заказ уже должен показывать оплату и не просить её повторить.
Разберём учебный сценарий: напоминание запланировали, клиент оплатил, затем нажал уведомление. Мы не внедряли мобильные push для клиента. Наши примеры взяты из писем и выдачи доступа на vibecoding.ru; ниже отдельно показано, какие правила можно перенести в приёмку приложения.
Не хотите разбираться сами? Внедряем ИИ в ваш бизнес: задачи без лимита, одна цена в месяц, отмена в любой момент.
1. Принятая отправка ещё не означает, что клиент дошёл до заказа.
У сценария есть разные результаты: событие возникло, сообщение приняли, уведомление показали, человек нажал, приложение открыло заказ. Отчёт об отправке подтверждает только часть пути. Зелёная строка в кабинете провайдера не отвечает на вопрос CTO: «Клиент видит то, ради чего мы его позвали?»
FCM прямо разделяет принятие сообщения и доставку устройству. Телефон может быть без сети, сообщение может ждать подключения и прийти позже. В фоновом режиме обычное notification-сообщение на Android показывает система; проверка заказа в коде приложения не обязательно выполняется перед этим показом.
Поэтому начните приёмку с конкретного заказа. Плохая демонстрация: push пришёл, приложение открылось. Полезная демонстрация: уведомление про этот заказ, нажатие открывает его, состояние соответствует серверу, кнопка ведёт к допустимому действию. Даже правильный текст уведомления не исправляет неверный экран.
Четыре разных доказательства
FCM, документы о сроке жизни и получении сообщений; схема доказательств редакции. Проверено 08.10.2026, не мобильный замер.
2. Перед отправкой напоминания нужно заново проверить заказ.
План напоминания хранит намерение отправить сообщение позже. Он не хранит истину о заказе навсегда. Когда наступает время отправки, нужно заново проверить оплату, отмену и адресата. Условие «на момент планирования не оплачен» для приёмки недостаточно.
Поставьте оплату рядом с отправкой во времени. Если оплата стала известна до решения отправить, напоминание не должно уходить. Если провайдер уже принял сообщение, гарантировать его исчезновение нельзя. Ограничение срока жизни уменьшает риск поздней доставки, но само по себе не узнаёт о платеже и не отзывает показанное уведомление.
Повторная доставка события тоже не должна создавать новую задачу напоминания без причины. Для дедупликации нужен ключ бизнес-сценария, например заказ и назначение напоминания. Ключ схлопывания у провайдера решает другую задачу: заменяет ожидающее сообщение. Он не запрещает приложению дважды решить, что заказ надо оплатить.
Решение зависит от состояния в момент отправки
Матрица приёмки редакции; ограничения доставки сверены с FCM 08.10.2026. Это требования к реализации, не гарантия транспорта.
3. После нажатия приложение читает текущее состояние и проверяет доступ.
Ссылка из уведомления должна называть конкретный объект. Сообщения «заказ ждёт оплаты» недостаточно, чтобы восстановить маршрут. Но идентификатор заказа в сообщении ещё не даёт права его читать: сервер проверяет текущего пользователя и доступ к объекту.
Если человек вышел из аккаунта, приложение сохраняет цель перехода, предлагает вход и после него заново проверяет доступ. Переход на главный экран с потерянным заказом не проходит приёмку. Вход в другой аккаунт тоже не должен раскрывать чужой заказ.
После нажатия приложение получает актуальное состояние. В нашем учебном сценарии заказ уже оплачен: экран показывает результат, повторная оплата недоступна. Сервер тоже проверяет допустимость действия. Если сеть пропала, нужны сообщение об ошибке обновления и повтор загрузки, а не прежняя просьба оплатить как подтверждённый статус.
Для каждой поддерживаемой платформы проверьте переход из активного приложения, из фона и после холодного запуска. На Android официальная рекомендация для обычного экрана включает ожидаемую навигацию назад. Deep link, то есть ссылка на нужный экран, полезен лишь вместе с правильным восстановлением этого пути.
Матрица нажатия на уведомление
Матрица редакции, документы Android о навигации и RuStore о действии нажатия. Проверено 08.10.2026; конкретное приложение по ней не испытано.
4. Повтор события и повтор доставки нужно учитывать отдельно.
Эта граница уже встречалась у нас в веб-сценариях. В публичном журнале машины виден ход разработки vibecoding.ru; для этой статьи мы дополнительно перечитали записи проверок писем и доступа. Ни одна из этих историй не является мобильным push-кейсом.
Пауза между письмами защищает от частого повтора. Она не отвечает на вопрос, завершилось ли нужное действие. Если доступ уже выдан, но письмо с ним не отправлено, запретить любой повтор означает оставить доставку незавершённой. Состояние бизнеса и состояние уведомления требуют разных записей.
Для приложения отсюда следует критерий: повтор события не создаёт второй заказ или вторую оплату, а повтор доставки не превращает выполненное действие в невыполненное. Если ответ транспорта потерян, команда должна видеть неопределённость и заранее выбранное правило повторной попытки, а не обещание «дубликатов никогда не будет».
Что нашли при проверках и какое правило добавили
17.07
Повтор запроса подписки мог снова отправить подтверждающее письмо. Ограничили частоту повторной отправки паузой.
09.09
Подтверждение платежа ещё не доказывало, что куплен нужный продукт. Добавили проверку соответствия продукта до выдачи доступа.
09.09
При неудачном письме повтор события мог увидеть уже выданный доступ и пропустить письмо. Разделили учёт доступа и доставки, чтобы продолжать незавершённую отправку.
Записи проверок проекта от 17.07 и 09.09.2026, перечитаны 08.10.2026. Это найденные риски и исправления, не статистика пострадавших клиентов.
5. Агенту нужна таблица переходов и критерий приёмки.
«Подключить push» описывает транспорт. Для постановки задачи агенту задайте событие, состояния заказа, адресата и ожидаемый экран. Попросите сначала показать все места, где событие превращается в отправку и маршрут. Так меньше риск исправить один обработчик и оставить другой со старым правилом.
Отдельно запишите правила для ИИ-агентов: не менять условия оплаты, не ослаблять проверку доступа, не считать подтверждение провайдера подтверждением клиентского результата. Инженер ведёт машину агентов, а CTO принимает решения об устройстве системы и допустимых последствиях повторов.
Если правила оплаты и перехода уже расходятся между модулями, это работа с техническим долгом. Правку нужно довести до всех входов одного сценария: отложенная задача, повтор события, открытие по уведомлению, обычное открытие заказа. Иначе агент починит нажатие, а старое напоминание продолжит приходить из другого места.
Затем агент готовит проверяемое изменение. Показать только новый обработчик недостаточно: приёмщик должен воспроизвести оплату до отправки, оплату после отправки, повтор события и вход после нажатия. Результат каждой проверки привязан к конкретному заказу и версии приложения.
Что передать и что получить обратно
Шаблон задачи и приёмки редакции. Он не задаёт срок или цену мобильной доработки без обследования приложения.
6. Готовность подтверждает путь до экрана, а сбои возвращаются в правила.
Автоматические проверки полезны для переходов состояний и повторов. Приёмка на реальном устройстве нужна для поведения ОС, разрешений и запуска приложения. Попросите подтверждение на каждой поддерживаемой платформе и версии, включая отказ от уведомлений: заказ всё равно должен оставаться доступным внутри приложения.
У записи прогона должны быть условие, время события, состояние заказа, версия приложения и ожидаемый результат. Затем видны фактический экран и связанная попытка доставки. Фраза «на моём телефоне работает» без условий не помогает повторить сбой на телефоне клиента.
После выпуска собирайте результат по рубежам. Падение числа переходов может означать проблему маршрута, входа или чтения заказа; его нельзя автоматически объявлять проблемой текста push. Сначала найдите место обрыва, затем верните воспроизводимый сценарий в задачу и проверку.
Запись должна объяснять место обрыва
Предложенная схема наблюдения редакции. Фактические показатели приложения не измерялись; отсутствие сигнала не доказывает, что человек не получил уведомление.
Назначьте владельца разбора. Ответственность за ошибки ИИ не заканчивается на авторе кода: кто принимает изменение, кто сопоставляет сигнал со сценарием и кто возвращает исправление на проверку? Замкнутый путь заканчивается новым правилом, которое ловит тот же сбой при следующей правке.
Если некому вести такую работу, подписка «Один проект» стоит 250 000 ₽ в месяц на 08.10.2026. Инженер ведёт машину агентов и может работать над связкой события, отправки и экрана в вашем проекте. Возможность работы и границы задачи обсуждаются по вашему приложению.
Для следующего шага откройте адрес теста для руководителя. Сейчас он ведёт на страницу услуг: тест снят. К разговору полезно подготовить одно ошибочное уведомление, состояние заказа и экран после нажатия. Этого хватит, чтобы начать разбор границ задачи.
Что и как мы проверяли
| Факт | Что известно | Проверено |
|---|---|---|
| Механизм транспорта | Прочитаны FCM, Android и RuStore. Испытания мобильного приложения не проводились. | 2026-10-08 |
| Наши истории | Перечитаны записи проверок от 17.07 и 09.09.2026. Только письма и доступ на vibecoding.ru, не мобильный push-кейс. | 2026-10-08 |
| Матрицы приёмки | Рекомендация редакции, не выполненный клиентский проект. Для вашего приложения нужен отдельный прогон. | 2026-10-08 |
| Условия услуги | «Один проект»: 250 000 ₽ в месяц. Проверено на живой странице /services. | 2026-10-08 |
| Адрес теста | /services/test перенаправляет на /services. Работающий тест не заявлен. | 2026-10-08 |
7. Доставка, переход и повторы требуют отдельных проверок.
Что такое push-уведомление в приложении?+
Сообщение, которое приложение может показать пользователю через систему уведомлений устройства. Доставка зависит от платформы, разрешений и состояния устройства. В продуктовом сценарии важны ещё причина отправки и результат нажатия.
Почему push приходит после оплаты?+
Напоминание могло быть запланировано до оплаты или уже принято провайдером, пока телефон был без сети. Проверка состояния перед отправкой сокращает лишние сообщения. При открытии старого сообщения приложение должно показать свежий статус.
Достаточно ли добавить deep link?+
Нет. Ссылка на конкретный экран должна переживать запуск и вход, проверять доступ и приводить к свежему состоянию объекта. Ссылка без этих условий может открыть неправильный экран или чужие данные.
Можно ли гарантировать отсутствие повторных уведомлений?+
Нельзя получить такую гарантию одной настройкой SDK. Нужно определить повторы бизнес-событий, учёт попыток отправки и поведение при неизвестном ответе транспорта. Приёмка проверяет выбранные правила, не обещает безусловную единичную доставку.
Что делать, если пользователь запретил уведомления?+
Сохранить доступ к заказу и его статусу внутри приложения. Отдельно проверить путь без push. Не считать запрет уведомлений ошибкой оплаты или основанием скрыть результат покупки.
Источники
- FCM: Setting the lifespan of a message — официальная документация
- FCM: Receive messages in an Android app — официальная документация
- Android Developers: Start an Activity from a Notification — официальная документация
- Android Developers: Notification runtime permission — официальная документация
- RuStore: отправка push-уведомлений — официальная документация
- vibecoding.ru: публичный журнал машины; истории отправок сверены по записям редакции — наш проект
- vibecoding.ru: условия подписки «Один проект» — официальный сайт
Запомнить
1. Перед отправкой заново проверяйте, осталось ли действие невыполненным.
2. После нажатия открывайте конкретный объект, проверяйте доступ и читайте свежий статус.
3. Разделяйте повторы бизнес-события и попытки доставки; неизвестный ответ учитывайте отдельно.
4. Принимайте сценарий с оплатой между отправкой и нажатием, входом, отсутствием сети и холодным запуском.
5. Возвращайте обнаруженный сбой в правило и воспроизводимую проверку.
Адрес теста для руководителя сейчас ведёт на страницу услуг. Тест снят.