Super App: архитектура встраиваемых модулей и партнёрских сервисов

Представьте: маркетплейс с 50 партнёрами, каждый хочет разместить свой экран мгновенно, без релизов в App Store. Как управлять этими модулями, не жертвуя безопасностью и производительностью? Ответ — система мини-программ. Мы разрабатываем и внедряем такую систему для Super App, обеспечивая изолирова

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Услуги, которые мы предлагаем
Показано 1 из 1Все 1734 услуг
Super App: архитектура встраиваемых модулей и партнёрских сервисов
Сложный
от 2 недель до 3 месяцев

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    895
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    1003
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    597

Представьте: маркетплейс с 50 партнёрами, каждый хочет разместить свой экран мгновенно, без релизов в App Store. Как управлять этими модулями, не жертвуя безопасностью и производительностью? Ответ — система мини-программ. Мы разрабатываем и внедряем такую систему для Super App, обеспечивая изолированное выполнение, безопасный доступ к нативным API и обновление без релиза в App Store. Это не просто WebView-обёртка: мы строим полноценную инфраструктуру, которая позволяет партнёрам создавать свои модули, а хост-приложению — контролировать каждый аспект их работы. Наша компания имеет 8+ лет опыта в мобильной разработке и реализовала более 20 Super App проектов, включая экосистемы для банков и маркетплейсов. Замена монолита на модульную архитектуру сокращает время вывода партнёрского сервиса на 70%, а снижение стоимости владения достигает 30% за счёт отсутствия App Store ревью. Оценим ваш проект за 2 дня — свяжитесь для консультации.

Архитектура экосистемы встраиваемых модулей

Два кардинально разных подхода к runtime.

WebView-based. Мини-программа — это веб-приложение (React, Vue, или кастомный DSL как у WeChat WXML/WXSS). Запускается в изолированном WKWebView (iOS) или WebView (Android). Стандартные веб-технологии, низкий порог входа для партнёров, кроссплатформенность кода мини-программы. Ограничения: производительность ниже нативной, нет доступа к сложным нативным API без Bridge.

Native plugin-based. Мини-программа — скомпилированный нативный код (Android: DEX через DexClassLoader; iOS: compile-time Swift Package). Нативная производительность, полный доступ к API через контролируемые интерфейсы. Ограничения: App Store запрещает загрузку исполняемого кода на iOS, поэтому на iOS нативные плагины должны быть включены в бинарник при сборке.

На практике используем гибрид: базовые партнёрские сервисы — WebView, собственные критичные мини-программы — нативные плагины. Сравнение подходов:

Характеристика WebView-based Native plugin-based
Холодный старт 500–800 мс 100–200 мс
Доступ к API Только через Bridge Полный нативный
Обновление Без релиза Без релиза (Android), с релизом (iOS)
Производительность UI Средняя Высокая

WebView-based мини-программы проще в разработке, но нативные плагины в 2–3 раза быстрее на сложных UI-сценариях.

Формат пакета мини-программы

Мини-программа дистрибутируется как zip-архив с манифестом:

{ "id": "com.partner.loans", "version": "2.3.1", "minHostVersion": "3.0.0", "entryPoint": "index.html", "permissions": ["payment", "geolocation"], "allowedDomains": ["api.partner.com", "cdn.partner.com"], "signature": "sha256:abc123..." } 

При загрузке хост верифицирует подпись архива (RSA-PSS с публичным ключом партнёра), проверяет minHostVersion совместимость, проверяет permissions против списка разрешённых для данного партнёра, распаковывает в изолированную директорию. Запуск — только после успешной верификации.

Как работает Bridge API?

Bridge — единственная точка контакта между мини-программой и хостом. Архитектура запроса-ответа: На стороне мини-программы (JS):

MiniAppBridge.call('payment.pay', { orderId: 'order-123', amount: 99.99, currency: 'USD' }).then(result => { // result.transactionId }).catch(err => { // err.code, err.message }); 

На стороне хоста (нативный код) Bridge:

  1. Получает вызов через WKScriptMessageHandler.userContentController(_:didReceive:) (iOS) или @JavascriptInterface метод (Android)
  2. Парсит method и params
  3. Проверяет: есть ли у этой мини-программы разрешение вызвать payment.pay
  4. Если да — выполняет нативный код (показывает Payment UI, обрабатывает транзакцию)
  5. Возвращает результат через webView.evaluateJavaScript("MiniAppBridge._resolve(requestId, result)")

Каждый метод Bridge имеет явный список разрешений. Вызов метода без нужного разрешения -> синхронная ошибка PERMISSION_DENIED. Разрешения выдаются при регистрации партнёра, хранятся на сервере, кешируются в хосте.

Почему изолированное хранилище критично?

Каждая мини-программа получает namespace в локальном хранилище: ключи вида {mini_program_id}:{key}. Прямого доступа к SQLite или SharedPreferences хоста — нет. Доступ только через Bridge методы storage.set / storage.get / storage.remove с принудительным namespace.

WebView localStorage тоже изолирован: каждая мини-программа запускается с WKWebViewConfiguration с отдельным WKWebsiteDataStore.nonPersistent() или именованным persistent store. На Android — WebStorage с кастомным директорием и запрет пересечения origin.

Сессия пользователя. Мини-программа получает access token только через Bridge auth.getToken(). Токен выдаётся хостом на 15 минут, привязан к mini_program_id, scope ограничен. Мини-программа не видит master JWT пользователя.

Как обновляются мини-программы?

Обновление — без ревью в App Store. Последовательность:

  1. При запуске мини-программы (или фоново по расписанию) хост проверяет актуальную версию через GET /mini-programs/{id}/version
  2. Если сервер возвращает более новую версию — загружаем архив в фоне
  3. Верифицируем подпись нового архива
  4. При следующем запуске мини-программы — активируем новый пакет
  5. Предыдущая версия — в backup (для rollback при необходимости)

Принудительное обновление: если minHostVersion нового пакета несовместима с текущим хостом — показываем экран Доступно обновление приложения вместо запуска мини-программы.

Отладка и DevTools для партнёров

Разработчику мини-программы нужен удобный инструментарий. Предоставляем:

  • Simulator mode: локальный сервер (localhost:8080) как источник мини-программы вместо CDN — хост читает файлы напрямую без верификации подписи (только в debug build)
  • Bridge Inspector: логирование всех Bridge-вызовов в debug консоль Xcode / Android Studio Logcat
  • Mock Bridge: JS-библиотека (mini-program-bridge-mock) для тестирования в браузере без хоста

Кейс. Партнёрская экосистема маркетплейса: 8 партнёров, 23 активных мини-программы (12 WebView, 11 нативных плагинов на Android / compile-time на iOS). Bridge API: 55 методов. Среднее время холодного запуска мини-программы (первый за сессию) — 380 мс на iPhone 14. Тёплый запуск (возврат после паузы) — 80 мс. Обновление фоново: 70% пользователей получают новую версию мини-программы без перезапуска хоста.

Что входит в работу

  • Анализ требований и проектирование Bridge API
  • Реализация WebView- и нативного runtime
  • Интеграция с CDN, подпись пакетов и система обновлений
  • DevTools для партнёров: Simulator, Inspector, Mock
  • Документация и обучение команды партнёра
  • Поддержка после запуска

Ориентировочные сроки

Компонент Сроки
WebView runtime + базовый Bridge (20 методов) 8–12 недель
Маркетплейс + подпись + обновление +4–6 недель
Нативный plugin runtime (Android) +4–8 недель
Partner SDK + DevTools +4–6 недель

Стоимость рассчитывается индивидуально после анализа требований к Bridge API, числу партнёров и требованиям безопасности. Свяжитесь для точной оценки вашего проекта. Получите консультацию — мы подберём оптимальную архитектуру.

Super app