TGViewer
Системный анализ на максималках Системный анализ на максималках @system_analysis_max · 880 subscribers
Post #69 1.01K
Решаем рабочую задачу: Управление пуш-уведомлениями в мобильном приложении

Пробую новую рубрику – разбор реальных рабочих задач. Если интересно и хотите видеть другие задачи, поддержите и поставьте 🔥


Разбираем задачу, которая часто встречается в мобильных приложениях (и я тоже ее делал)

Постановка задачи 💡

Как пользователь, я хочу управлять настройками пуш-уведомлений, чтобы отключить/включить определенные уведомления

С чего начать? 💬

С чего начинается танец СА? Правильно – с вопросов:

🤍 Какие группы уведомлений будут? (новости, акции)
🤍 Какие уведомления входят в каждую группу?
🤍 Планируются ли добавлять новые группы и уведомления в будущем?
🤍 Как настройки заданы по умолчанию?
🤍 Синхронизировать настройки между устройствами?
🤍 Нужна ли кнопка «Включить/выключить ВСЕ»?
🤍 Где в приложении размещаем экран настроек?

В итоге получаем инфу для БД, API и дизайна

Прописываем сценарии ✍️

Дальше подумаем над возможными сценариями:

🤍 Система задает дефолтные настройки для нового пользователя
🤍 Пользователь получает свои настройки
🤍 Пользователь меняет одну настройку
🤍 Пользователь меняет все настройки разом

Получилось не так уж и много

Проектируем БД ✍️

Возьмем самый сложный вариант – групп много, добавляться в будущем будут, настройки должны синхронизироваться

🤍 notification_settings – основная таблица (user_id, notification_id, is_enabled)
🤍 notification_groups – справочник групп
🤍 notification_types – типы уведомлений и их привязка к группам

Так мы сможем легко добавлять новые уведомления и группы

Проектируем API-запросы ✍️

Прикинем, какие API-запросы между фронтом и бэком понадобятся

🤍 GET /setting/notifications – получить настройки
🤍 POST /setting/notification или PUT /setting/notification/{id} – изменить настройку
🤍 POST /setting/notification/all – включение/выключение всех настроек
🤍 POST /setting/notification/default – внутренний метод для установки настроек по умолчанию

А теперь – неочевидные моменты

🤍 Дефолтные настройки. Вместо синхронного API-запроса лучше использовать асинхронное сообщение в брокер (например, Kafka). Потому что API-запрос может не отработать, и нужно думать, что с этим делать – ибо пользователь словит ошибку из-за отсутствия данных

🤍 Реакция UI. Запрос может отрабатывать долго и не отработать в итоге, и что в это время происходит на экране? Пользователь блокируется лоадером? Это кажется избыточным для такого простого действия

Лучше сделать искусственное обновление (Optimistic Update), когда пользователь нажмет тогл, то фронт сразу обновит его состояние и фоном отправит запрос. Если ошибка, фронт вернет предыдущее состояние и отобразит ошибку, а если все окей – ничего не поменяется

—————

⬇ Сталкивались с такой задачей? Пишите в комментах, как решали 

#разбор_задач_системный_анализ
  • ❤ 16
  • 🔥 14
  • ❤‍🔥 4
More from @system_analysis_max
  1. Mar 27, 2026Прошел испытательный срок в Альфе 🅰️ Правда, это было 2 месяца назад, но время порефлекси…
  2. Mar 16, 2026Продолжая предыдущий пост Как вы помните, на прошлой неделе объявили о закрытии школы Syst…
  3. Mar 11, 2026Про опыт преподавания Давненько не писал в блог, пора исправляться Последние два месяца вы…
  4. Feb 10, 2026WebSocket на практике 📌 А вы знали, что в Postman можно протестировать не только REST API…
  5. Jan 21, 2026RabbitMQ на практике 📌 Часто ко мне на консультации приходят с запросом отточить какие-ни…
  6. Jan 15, 2026Первый пост в 2026 году Будет очень простым, потому что после выходных я еще не до конца в…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →