1. Messaging
Platform API
  • Введение
  • 00-Templates
  • 01-Documentation
    • API Style Guide
    • Breaking Changes
    • API versioning folder structure
    • Proposals
      • Предложение - Разделение ответственности: `sourceA -> sourceB?ids=...`
    • Architecture Decision Records
      • Формат Response Data
      • Переиспользование ресурсов в микросервисной архитектуре
  • Devices
    • Зарегистрировать устройство
      POST
  • Authentication
    • Получить токен пользователя
      POST
    • Регистрация нового пользователя
      POST
  • Advertising
    • Реклама
  • User (Profile, Levels, Gifts, Awards, Feedbacks, Following)
    • Profile
      • Birthday Greeting
        • Получить поздравление с днем рождения
        • Отметить поздравление с днем рождения как просмотренное
      • Email
        • Сменить почту
        • Подтвердить смену почты по токену
        • Подтвердить почту
        • Подтвердить почту по токену
    • Level Stages
      • Документация
      • Получить список всех стадий
      • Получить данные о текущей стадии пользователя
      • Получить данные о стадии по ID
    • Gifts
      • Документация
      • Получить список всех подарков
      • Получить список всех категорий подарков
      • Получить данные об одном подарке по ID
      • Пометить подарок как полученный
    • Awards
      • Получить награды пользователя
    • Follow
      • Подписывает текущего пользователя на указанный профиль
      • Получение подписчиков пользователя
      • Получение списка подписок
      • Удаляет подписчика пользователя
    • Получить данные о текущем пользователе
      GET
    • Получить публичный профиль пользователя по ID
      GET
    • Удалиться
      POST
  • Samagonka | Sprint | Summarace | Knowledge Sprint
    • Получить саммагонку на текущую неделю
    • Получить календарь саммагонки
    • Получить статистику по спринту
    • Получить Топ пользователей по саммагонке
    • Получить рейтинг по сданным экзаменам
    • Получить историю рейтинга экзаменов
    • Получить топ 20 курсов
  • Categories
    • 2025-08-01 / Иконки категорий
    • Получить список категорий
  • Subscription
    • v5
      • Получить статус подписки
  • Combo Summary
    • Моё
      • Получить список избранных комбо-саммари
      • Получить список начатых комбо-саммари
      • Получить список пройденных комбо-саммари
      • Изменить состояние избранного для комбо-саммари по ID
    • Получить список комбо-саммари
    • Получить комбо-саммари по ID
    • Получить диплом для комбо-саммари по ID
    • Получить список комбо-саммари в которые входит саммари по ID саммари
    • Сгенерировать диплом для комбо-саммари по ID
  • Courses | Summary | Lectures
    • v5
      • Получить случайный саммари
      • Скачать видео из курса
      • Получить список качеств видео из курса
      • Получить список общие качества всех видео из курса
    • v3
      • Моё
        • Получить список просмотренных саммари (Начатые, Пройденные)
      • Получить список саммари
    • unspecified
      • Получить саммари по ID
  • Compilations
    • v3
      • Получить подборки
  • Bookmarks
    • v3
      • Создать закладку в лекции
    • v5
      • Создать закладки в лекции
  • Notifications
    • Получить список уведомлений
    • Получить количество непрочитанных уведомлений
  • Feedbacks
    • Получить мнения для саммари по ID
    • Получить все мнения текущего пользователя
    • Получить все мнения пользователя по User ID
    • Получить комментарии к мнению по ID
    • Получить список мнений для "Сейчас обсуждают"
    • Получить мнение по ID
    • Получить список мнений пользователя
  • Achievements
    • Получить достижение по ID
    • Получить список достижений
    • Установить saluted на true
  • Lecturers
    • Получить список лекторов
    • Получить лектора по ID
  • Tests/Games/Quizzes/Exams
    • Введение
    • Quizzes
      • v5
        • Bookmark Templates
          • Получить шаблон для создания закладки по ID квиза и ID вопроса
      • Получить данные по квизу по ID
      • Получить результат квиза по ID
    • Plays
      • Начать квиз для данного пользователя
      • Получить вопрос теста по ID
      • Завершить текущий квиз
      • Отправить ответ на вопрос
      • [Deprecated] Начать квиз для данного пользователя - V3
    • In-Player Quiz
      • v5
        • In-Player Quiz: описание модуля
        • Get In-Player Quiz questions
        • Complete In-Player Quiz Question
  • Playlist
    • v5
      • Документация
      • Summary
        • Получить начальную пагинацию плейлиста саммари.
        • Получить следующую пагинацию плейлиста саммари.
        • Получить информацию о видео из плейлиста.
      • Favorites
        • Получить начальную пагинацию плейлиста избранного.
        • Получить cледующую пагинацию плейлиста избранного.
  • Subscription Certificates
    • Инфа о сетификате
    • Создать подарочный сертификат
    • Получение сертификатов пользователя
    • Активировать сертификат
  • Orders
  • Rating
    • Бусты
    • v5
      • Получить модификаторы для баллов
      • Получить активный буст баллов
    • unspecified
      • Получить топ-100 пользователей рейтинга
      • Получить историю рейтингов
      • Переключает флаг пользователя на отображение топа предыдущего месяца
  • In-Design
    • Messaging
      • Введение
      • Триггеры
      • Сегментация
      • Способы доставки
      • Представление и Виджеты
  • Success-Story
    • Получить историю успеха
  • Intensives
    • Получить все интенсивы
  • Mascot
    • Получить текущий статус маскота
    • Получить прогресс пользователя по текущему статусу маскота
    • Получить все статусы маскота
    • Получить скиллы маскота
    • Получить модификаторы по скиллам маскота
    • Получить график статистики по скиллам маскота
    • Получить скилл, который относится к заданной категории.
  • Animations
    • Получить анимации
    • Получить анимацию по ID
  • Quiz-Card
    • Получить квиз карточки по id саммари или slug для текущего клиента
    • Получить группы квиз карточек по саммари пользователя доступные на текущую дату
    • Отвязать(удалить) выбранные карточки из групп карточек пользователя
  • Files
    • Загрузить файл
  • Mini-Tasks
    • Получить мини-задания
  • Live Activity
    • Зарегистрировать токен LA за пользователем
  • Recommendations
    • AI Рекомендации
    • Получить AI рекомендации
  • Timecodes
    • Получить список аннотаций для лекции/видео
  • Archetypes
    • Эпохи
    • Персонажи
    • Навыки
    • Notifications
      • Получить список уведомлений от Маскота
      • Получить кол-во уведомлений от Маскота
      • Отметить уведомления от Маскота просмотренными
    • Skills
      • SkillLevels
        • Запросить генерацию сертификата по уровню навыка
        • Пометить уровень навыка как просмотренный
        • Получить SkillLevel2DTO по ID уровня
        • Получить список SkillLevel1DTO
      • SkillSuperPowers
        • Получить список всех суперспособностей
        • Пометить суперспособность как просмотренную
      • Получить список SkillProgressDTO
      • Получить SkillProfessionDTO по ID навыка
      • Получить лекцию навыка по ID навыка и индексу
      • Получить навык по идентификатору
      • Получить навык по ID категории
    • Characters
      • Получить диалог с персонажом по его ID
      • Получить персонажа по его ID
      • Получить открытых персонажей
      • Обновить персонажа по ID
    • Получить текущую эпоху
  • Schemas
    • Core
      • LanguageText
      • Metadata
      • ApiError
      • File
      • AnimationProperties
      • Metadata2
    • Basic
      • Ranges
        • DateRange
      • GradientV2
      • Gradient
      • Color
    • Resources
      • Courses
        • Course
        • CourseListItem
      • Recommendations
        • RecommendedCourseListItem
    • Schemas
      • Achievements
        • Achievement
      • Animations
        • Animation
        • AnimationListItem
      • Playlist
        • v5
          • Summary
            • Cursor
          • Favorites
            • Cursor
          • Video
      • Subscription
        • SubscriptionInfo
        • UserSubscriptionInfo
      • Lecturers
        • LecturerListItem.Invalid
        • Lecturer
      • ComboSummary
        • ComboSummaryListItem
        • ComboProgressItem
        • ComboSummary
      • Feedbacks
        • Feedback
        • FeedbackComment
        • UserFeedback
        • FeedbackAchievement
        • FeedbackListItem
        • FeedbackDetails
        • FeedbackUser
      • KnowledgeSprint
        • KnowledgeSprintCalendar
        • KnowledgeSprintTopUser
        • KnowledgeSprintStats
      • MiniTasks
        • MiniTask
      • Level System
        • LevelStage
        • GiftCategory
        • Gift
      • User
        • User
        • ActiveUser
        • Award
      • Tests | Quizzes
        • v5
          • In-Player Quiz
            • InPlayerQuiz
            • InPlayerQuizQuestion
            • InPlayerQuizAnswer
            • InPlayerQuizCompletedState
        • QuizInfo
        • QuestionInfo
        • QuizPlay
        • QuizResult
        • QuizFinishState
      • Subscription Certificates
        • Certificate
        • CreateCertificate
      • Rating
        • RatingInfo
        • RatingTopUsers
        • RatingTopUser
        • ActiveBoost
      • SuccessStory
        • SuccessStory
      • Intensive
        • Intensive
      • Notifications
        • NotificationsUnreadCount
        • Notification
      • Archetypes
        • Notifications
          • ArchetypeNotification
        • Skills
          • SkillProgressDTO
          • SkillProfessionDTO
          • SkillCourseItem
          • Superpower
          • SkillLevel1DTO
          • SkillLevel2DTO
          • Skill
        • Characters
          • Character
          • UnlockedCharacters
          • CharacterChat
          • CharacterChatMessageItem
          • NextCharacterProgress
          • CharacterDetails
        • UserSkillLevel
        • Epoch
      • Samagonka_Duplicate
        • SummaraceDay
        • SummaraceDays
        • SummaraceTarget
        • KnowledgeSprintData
        • SummaraceDataUser
        • SummaraceTopInfo
        • TopHistoryData
        • TopCourse
      • Mascot
        • Graph
        • Skills
          • MascotSkillModifiers
          • MaskotSkill
        • Statuses
          • MaskotStatusListItem
          • MascotStatus
          • MascotStatusProgress
        • MascotStats
      • Quiz-Card
        • QuizCard
        • QuizCardGroup
        • QuizCardGroupSummaryInfo
      • Categories
        • Category
    • Timecodes
      • Timecode
    • Bookmark
    • BookmarkTemplate
  1. Messaging

Способы доставки

In-App сообщения можно доставлять различными способами, каждый из которых имеет свои преимущества и недостатки. В данной статье рассмотрим два основных подхода:
1.
Загрузка всех сообщений в локальную БД и обработка на клиенте
2.
Отправка события на сервер, который инициирует push notification с данными для показа сообщения
Также описаны возможные альтернативы и их плюсы и минусы.

1. Загрузка всех сообщений в локальную базу данных и обработка на клиенте#

Как это работает:#

Приложение периодически загружает все новые сообщения с сервера и сохраняет их в локальной базе данных. Далее оно обрабатывает события (триггеры) и условия для показа сообщений непосредственно на устройстве пользователя.

Преимущества:#

Меньшая зависимость от сети: Все сообщения находятся локально, и их можно обрабатывать даже без постоянного подключения к интернету. Это особенно важно для оффлайн-режима или при нестабильном соединении.
Мгновенное отображение: Сообщение может быть показано моментально после выполнения условия, так как проверка происходит на стороне клиента.
Меньшая нагрузка на сервер: Поскольку все события и условия обрабатываются на клиенте, серверу не нужно обрабатывать логику показа сообщений.
Масштабируемость: При большом количестве пользователей нагрузка на сервер минимальна, так как приложение выполняет всю вычислительную работу локально.

Недостатки:#

Обновления и синхронизация: Сообщения должны быть регулярно обновляемы. Это создает дополнительную сложность для синхронизации сообщений между сервером и клиентом.
Безопасность: Поскольку логика показа сообщений и сами сообщения хранятся на устройстве, это может сделать систему уязвимой для манипуляций со стороны пользователя.
Ограничение памяти: Локальная база данных может увеличивать использование памяти приложения, особенно при большом количестве сообщений или сложных условиях для их показа.
Устаревание данных: Если устройство долгое время находится без подключения к интернету, сообщения могут устареть и стать нерелевантными.

2. Отправка события на сервер и получение push data notification#

Как это работает:#

Приложение отправляет события (например, покупку, завершение уровня или вход в приложение) на сервер. Сервер обрабатывает эти события и, если условия выполнены, отправляет push data notification с информацией о сообщении, которое нужно показать.

Преимущества:#

Централизованное управление: Вся логика показа сообщений обрабатывается на сервере, что облегчает управление и поддержку правил, условий и самих сообщений.
Более точная сегментация: Поскольку сервер может агрегировать больше данных и учитывать более сложные правила сегментации, сообщения могут быть более точно нацелены на нужную аудиторию.
Снижение нагрузки на клиент: Приложению не нужно хранить и обрабатывать все сообщения локально, что уменьшает использование памяти и процессорных ресурсов устройства.
Актуальные данные: Поскольку сервер принимает решение в реальном времени, сообщения всегда релевантны текущей ситуации.

Недостатки:#

Зависимость от сети: Для получения push notification приложение должно быть подключено к интернету. Если соединение слабое или отсутствует, сообщение не будет доставлено вовремя.
Задержка в отображении: Между событием и получением push notification может возникнуть задержка, что снижает оперативность показа сообщений.
Нагрузка на сервер: Все события должны отправляться на сервер, который обрабатывает логику триггеров и условий. Это может создавать значительную нагрузку на инфраструктуру при большом количестве пользователей.
Ограничения push notification: Операционные системы могут накладывать ограничения на частоту или количество push уведомлений, что может ограничивать возможности доставки сообщений.

Альтернативы#

1.
Гибридный подход:
Описание: Приложение может использовать оба подхода: хранить основные сообщения локально для быстрого отображения и в то же время отправлять события на сервер для получения push уведомлений с новыми или дополнительными сообщениями.
Преимущества:
Меньшая зависимость от сети: Локальные сообщения доступны всегда.
Сервер может отправлять обновленные сообщения или актуализировать контент через push notification.
Недостатки:
Более сложная реализация.
Необходимо поддерживать два разных способа доставки.
2.
Динамическое получение сообщений по запросу:
Описание: Вместо хранения всех сообщений локально или получения через push notification, приложение может запрашивать сообщения у сервера только тогда, когда происходит конкретное событие. Например, при покупке или завершении уровня приложение отправляет запрос на сервер и получает ответ с соответствующими сообщениями.
Преимущества:
Меньшая нагрузка на локальную базу данных.
Сообщения всегда актуальны, так как запрашиваются в момент события.
Недостатки:
Зависимость от скорости сети.
Возможные задержки в показе сообщений.
3.
Кеширование сообщений:
Описание: Сообщения загружаются и кэшируются локально при наличии сети, а затем проверяются на актуальность и обновляются, когда устройство снова подключается к интернету.
Преимущества:
Можно показать сообщения оффлайн, сохраняя при этом актуальность данных при повторном подключении.
Недостатки:
Нужно правильно управлять устаревшими сообщениями и очищать кэш.

Заключение#

Каждый из методов доставки сообщений имеет свои сильные и слабые стороны. Выбор подхода зависит от конкретных требований приложения, таких как необходимость работы оффлайн, количество пользователей, частота событий и критичность времени показа сообщений. Часто наиболее эффективным решением может быть гибридный подход, сочетающий преимущества нескольких методов, чтобы обеспечить баланс между скоростью доставки, актуальностью и минимальной нагрузкой на ресурсы.
Modified at 2026-07-08 15:19:33
Previous
Сегментация
Next
Представление и Виджеты
Built with